我只是想知道如何进行,或者是否有必要,删除 []
一个声明如下的数组:
int* arrgen(int x)
{
int *newarray = new int[x];
return newarray;
}
函数返回后,您将如何删除 newarray
?还是在函数返回后“自动”删除
以及函数 native 变量的其余部分?
最佳答案
不,在这种情况下,您必须从函数外部删除。不管怎样,如果你从函数内部删除,返回时你就会有一个悬空指针,所以它没有意义。
如果你想要自动释放,使用 c++11 执行此操作:
std::unique_ptr<int []> newarray(new int[x]);
return newarray;
这将返回 newarray
,当您停止使用它时,它将通过 unique_ptr
析构函数调用 delete []
。
关于c++ - 函数返回后如何删除堆分配的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22370162/