1

で宣言されたオブジェクトの配列を使用するプログラムを作成しています

Element * elements = new Element[number];

要素は、class独自のデストラクタを持つ/必要とする要素です。

これを削除するときは、配列の削除だけを使用し、プログラムにデストラクタの呼び出しを心配させます。

delete [] elements;

または、各アイテムのデストラクタをキーワード delete で明示的に呼び出しますか?

for(int ii = 0; ii< ArraySize; ii++)
    delete elements[ii];
delete [] elements;

注:おそらく のようなものを使用できることは理解していますがboost::ptr_vector、同様hashTableの機能が必要だったので( for ループには追加情報が必要ですが、それはこの質問の直接の範囲外です)、従来の配列を使用している理由です。メモリリークを回避するために必要な動作を知りたいです。

4

2 に答える 2

3

最初の1つ。あなたがすべき

delete [] elements;

2 番目のものは正しくなく、コンパイルしようとするとエラーが発生するはずです。

于 2012-05-03T05:01:53.973 に答える