我有一个使用 new
关键字分配内存的函数。
该数组从函数返回,但我需要以某种方式释放它。它是在函数返回后释放的,还是由接收代码在完成后释放数组?
我是否应该让这个数组成为一个成员变量,然后在类析构函数中释放它?
最佳答案
如果您使用new
显式分配内存,则必须使用delete
显式释放它。局部变量将在返回时被释放;像 vector
这样的类可能会在幕后进行一些分配,但它们会为您清理这些内容。
一般来说,C++ 在很大程度上允许您选择内存管理模型。您可以坚持使用局部变量和非指针类成员,并获得基于范围的分配。您可以使用指针和 malloc/free 或 new/delete(但永远不要 free() new'd 指针,反之亦然!)。或者,您可以获取 Boost 并获取用于引用计数语义的 boost::shared_ptr
。
关于c++ - 当函数返回时,函数中分配的内存是否被释放?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4798921/