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 回答