gpt4 book ai didi

c++ - 删除指针数组的正确方法

转载 作者:太空狗 更新时间:2023-10-29 19:46:19 30 4
gpt4 key购买 nike

我有一个指针数组(通过调用 new ptr*[size] 创建)。所有这些指针都指向一个也放在堆上的对象。

删除数组和所有新指针的正确方法是什么?

这就是我现在做的:

for (int i = 0; i < size; i++) delete array[i];
delete[] array; // Not sure since this double deletes array[0]

这是否符合我的预期?

谢谢

最佳答案

每个指针分配了 new得到对应的delete .每个指针分配有 new []得到对应的delete [] .这就是您真正需要知道的全部。当然,当您有一个包含动态分配指针的动态分配数组时,释放必须以相反的顺序发生。

因此,正确的成语应该是...

int main()
{
int **container = new int*[n];
for(int i = 0; i < n; ++i)
container[i] = new int[size];

// ... and to deallocate...
for(int i = 0; i < n; ++i)
delete [] container[i];

delete [] container;
}

然后我当然会说“停止这样做”并建议您使用 std::arraystd::vector (模板类型为 unique_ptr<int> )。

关于c++ - 删除指针数组的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13943275/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com