スレを勃てるまでもないC/C++の質問はここで 24at TECH
スレを勃てるまでもないC/C++の質問はここで 24 - 暇つぶし2ch739:デフォルトの名無しさん
16/05/12 11:37:00.64 ehHa3Ia2.net
delete: 削除対象のインスタンスは1つのみなので、ポインタが指しているオブジェクトのデストラクタを実行すればよい。
delete[]: 削除対象のインスタンスは配列になっているので、オブジェクトの配列そのものだけではなく、
何回デストラクタを実行すればよいのかを保存しておく必要がある。
delete[] はそれを参照して、繰り返しデストラクタを走らす。

なので、 new int[10] したものを delete で削除してもそもそもデストラクタが存在しないので、
問題が発生することはまずないが、デストラクタで何らかの処理(暗黙、明示的な)をおこなう場合、
本来実行されるべきデストラクタが走らず問題となることがある。
(よく言う delete[] を使うべきところで delete を使うと、リークすることがあるというやつだ)

>>724
new A[20] で確保されるのは A型20この配列で、結果はその配列へのポインタだろ。
これのどこに問題他あるんだ? (ポインタが配列なんじゃなく、ポインタが指す先が配列)

また delete ptr; というのは ptr 自体を delete するわけではなく、 ptr が持っているポインタが
指している先のオブジェクトを delete するんだよな。 delete[] ptr 自体を delete するわけではなく、
ptrが指しているオブジェクトの配列を削除する。

つりだとしても面白くなさ過ぎるからいい加減にしろ。


次ページ
続きを表示
1を表示
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch