可能重复:
delete[] 对象数组
内存分配如下:
struct foo {
int size;
int * arr;
};
(*structA).arr = new int[(*structA).size];
如何解除分配?
可能重复:
delete[] 对象数组
内存分配如下:
struct foo {
int size;
int * arr;
};
(*structA).arr = new int[(*structA).size];
如何解除分配?
您分配的任何内容都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();
调用时分配的内存将被删除
delete[] (*structA).arr;
至于您的结构,这取决于您是在堆上还是在堆栈上分配结构。