new/delete new[]/delete[] について

C++
0
しょーま @shomah4a

C++あるある: STLを初めて知ると、便利すぎて「邪道だ」と思い、封印する。そしてSTLコンテナっぽいものを自作する。その自作コンテナを使って色々作った後にSTLを改めて使い、「なんでもっと早く使わなかったんだろう」

2010-03-21 23:25:58
Yusuke Ishikawa @yusukei

ありまくるwww RT @shomah4a C++あるある: STLを初めて知ると、便利すぎて「邪道だ」と思い、封印する。そしてSTLコンテナっぽいものを自作する。その自作コンテナを使って色々作った後にSTLを改めて使い、「なんでもっと早く使わなかったんだろう」

2010-03-21 23:29:39
しょーま @shomah4a

そしてスマートポインタでも同じ事を繰り返す RT: @yusukei: ありまくるwww RT @shomah4a C++あるある: STLを初めて知ると、便利すぎて「邪道だ」と思い、封印する。そしてSTLコンテナっぽいものを自作する。その自作コンテナを使って色々作った後にSTL

2010-03-21 23:36:42
hohehohe2 @hohehohe2

@shomah4a auto_ptrは使いにくいんで使ったことないな。

2010-03-21 23:45:14
しょーま @shomah4a

@yusukei 昔はともかく、今始めたらそういうことやらなそうだな

2010-03-21 23:45:42
Yusuke Ishikawa @yusukei

@hohehohe2 普通はboost::shared_ptrじゃない?

2010-03-21 23:46:42
Yusuke Ishikawa @yusukei

@shomah4a どうなんだろうか。普通にやるんじゃない?

2010-03-21 23:46:54
しょーま @shomah4a

@hohehohe2 boost::shared_ptr/array は自作しましたよ。

2010-03-21 23:48:17
Yusuke Ishikawa @yusukei

@hohehohe2 というかそっちしか使ったことないです

2010-03-21 23:51:12
Yusuke Ishikawa @yusukei

@shomah4a それも通る道。そしてptrとarrayをなんとか統一できないかと悩む。まぁVCならptrでもいいんだけど。気持ち悪いしなぁ

2010-03-21 23:52:13
しょーま @shomah4a

shared_ptr を自作したときは、親クラスの shared_ptr に子クラスの shared_ptr を代入できるようにするために色々がんばった記憶がある

2010-03-21 23:52:15
しょーま @shomah4a

@yusukei 削除関数をテンプレート引数に突っ込んでとりあえず解決としていた気がする

2010-03-21 23:58:34
Yusuke Ishikawa @yusukei

@shomah4a なるほろ。まぁ、結局どっちかというのを意識しないといけないんだよな

2010-03-22 00:00:23
しょーま @shomah4a

@yusukei delete[] だけだと開放するサイズ情報がないから結局どっかから取ってくるわけで、そう考えると delete[] って要らない子な気がしないでもない

2010-03-22 00:04:11
Yusuke Ishikawa @yusukei

@shomah4a そうなんだよね。結局ランタイムが知らないといけないわけで・・・どうしてdelete []なんてしたのか。new []に対応したかっただけなんだろうか・・・

2010-03-22 00:06:00
hohehohe2 @hohehohe2

@shomah4a @yusukei どのコンパイラの実装だったか忘れたけどarray[-1]相当のとこに格納されてた覚えが。

2010-03-22 00:08:22
しょーま @shomah4a

@yusukei delete にしてもポインタの参照先が導出クラスのインスタンスだったら結局サイズ情報が必要だしね

2010-03-22 00:09:06
hohehohe2 @hohehohe2

@shomah4a 静的に削除バイト数決められるから[]ありとなしはやっぱり両方いると思うけど。

2010-03-22 00:10:02
Yusuke Ishikawa @yusukei

@hohehohe2 あぁ、なるほど。そういう実装もあるんですねぇ。まぁ、結局はdeleteが見られる場所にないといけないわけで・・・

2010-03-22 00:10:04
hohehohe2 @hohehohe2

@shomah4a (なしの方は)静的に削除バイト数決められるから

2010-03-22 00:10:32
Yusuke Ishikawa @yusukei

@hohehohe2 結局はアロケータがサイズを知ってるんじゃない?

2010-03-22 00:11:57