【发布时间】:2019-12-12 10:41:54
【问题描述】:
您好,有一个与此非常相似的代码
// Constructor
Foo() {
int * ptr = new int[100];
/* More Stuff */
}
这会导致内存泄漏,有什么方法可以删除 ptr 而不使其成为成员变量?
【问题讨论】:
-
如果您想稍后将其删除,您必须将指针存储在某处。您还可以将其存储在全局变量中,将其添加到某个容器中,或类似的。
-
这里为什么需要使用
new?如果在编译时知道大小,则可以使用std::array代替(或纯 C 样式数组)。否则std::vector. -
我假设你不再需要构造函数后面的指针了?那为什么不直接删除呢?如果它真的是一个
int[100]数组,你也可以使用std::vector来处理动态内存分配和释放。应避免使用new -
目前还不清楚您正在努力解决基本内存管理的哪一部分,以及以何种方式。你应该扩展你的问题。
标签: c++ pointers memory-leaks