0

重複の可能性:
オブジェクトの配列をdelete[]

メモリは次のように割り当てられます。

struct foo {
  int size;
  int * arr;
};

(*structA).arr = new int[(*structA).size];

どのように割り当てを解除しますか?

4

2 に答える 2

4

割り当てるものはすべて、次のnew[]コマンドで削除する必要がありますdelete[]

structA->arr = new int[structA->size];
...
delete[] structA->arr;

この特定の例では、std::vector代わりに使用することをお勧めします。メモリの割り当てと割り当て解除を処理します。そのsize()メソッドを使用して、保持しているアイテムの数を判別できます。

struct foo {
  std::vector<int> arr;
};

structA->arr.resize(some value here);
...
int size = structA->arr.size();
于 2012-11-17T00:18:09.250 に答える
3

呼び出すと、割り当てられたメモリが削除されます

delete[] (*structA).arr;

構造体については、ヒープとスタックのどちらに構造体を割り当てたかによって異なります。

于 2012-11-17T00:18:19.863 に答える