c++ - 当函数返回时,函数中分配的内存是否被释放?

标签 c++ memory

我有一个使用 new 关键字分配内存的函数。

该数组从函数返回,但我需要以某种方式释放它。它是在函数返回后释放的,还是由接收代码在完成后释放数组?

我是否应该让这个数组成为一个成员变量,然后在类析构函数中释放它?

最佳答案

如果您使用new 显式分配内存,则必须使用delete 显式释放它。局部变量将在返回时被释放;像 vector 这样的类可能会在幕后进行一些分配,但它们会为您清理这些内容。

一般来说,C++ 在很大程度上允许您选择内存管理模型。您可以坚持使用局部变量和非指针类成员,并获得基于范围的分配。您可以使用指针和 malloc/free 或 new/delete(但永远不要 free() new'd 指针,反之亦然!)。或者,您可以获取 Boost 并获取用于引用计数语义的 boost::shared_ptr

关于c++ - 当函数返回时,函数中分配的内存是否被释放?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4798921/

相关文章:

c++ - C++ STL Map 在创建后是否会移动值的位置?

c++ - 在 VS2012 中使用 sqrt 内在的堆栈运行时检查失败

c++ - 动态分配数组和静态数组的区别

ios - 如何清理我的内存?

linux - 多实例上的 Gdb

c++ - delete p where p is a pointer to array always a memory leak?

c++ - 比 map<string, map<string, vector> 更好的东西

c++ - Qt/C 如何读取当前在帧缓冲区中的图像?

swift - watchOS 2 上的最大内存使用量?

c - 如何释放子线程中的内存?