c++ - 函数返回后如何删除堆分配的变量

标签 c++ arrays pointers heap-memory

我只是想知道如何进行,或者是否有必要,删除 [] 一个声明如下的数组:

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/

相关文章:

c - 使用循环为指针赋值

c++ - 如何编译二进制文件?

c++ - 初始化基类

c++ - 如何迭代 C++ 映射中的一组特定键?

java - 如何从数组中获取唯一值

javascript - 访问对象内对象的键和值

c++ - 寻找一些重构建议

java-servlet request.getParameterValues()

将结构体与指针成员进行比较

c - 在 C 中使用 void 指针模拟通用链表