1

私はこのようなものを持っています:

class HashTable
{  
  Bucket<E>** index;
  ...
}

 ~HashTable( ) 
 {
     delete[] index;
 }

 class Bucket
 {
    E* elements
    ...
 }

 ~Bucket( ) 
 {
     delete[] elements;
 }

この場合、メモリを正しく解放するにはどうすればよいですか?

delete[] index で十分ですか?それとも、すべての Bucket-Objects を循環させて、elemtents-array を個別に削除する必要がありますか?

4

2 に答える 2

2

を使用して各バケット オブジェクトを個別に割り当てた場合は、 を使用しnewてそれぞれの割り当てを解除する必要がありますdelete。単純な
ルールは次のとおり
です。deletedelete[]newnew[]

提案:
スマート ポインターを使用して、このようなメモリ管理の問題から身を守ることで、自分を有利にすることができます。

于 2012-04-19T14:30:52.480 に答える
0

HashTable には double 配列が含まれているため (おそらく)、次のように削除する必要があります。

delete[] index[0];
delete[] index[1];
...
delete[] index;

これらのレベルのいずれかが配列ではなく、単一のポインターである場合は、[].

Bucketあなたが書いたように、クラスは問題ありません。その配列とその中の が自動的に削除さEれます。

于 2012-04-19T14:34:45.180 に答える