为了使应用程序没有内存泄漏,C++ 项目中 new 的数量是否与 delete 的数量匹配?
最佳答案
如果您的意思是您需要相同数量的 delete
实例吗?在您的源代码中,因为您有 new
的实例, 那就不要。你可以有对象 new
在多个地方编辑,但所有这些对象 delete
d 通过同一行代码。事实上,这是一个常见的习语。
不同类型的智能指针通常采用许多不同的对象 new
在用户代码和 delete
的许多地方编辑它们来自库代码中的一个地方。
编辑
从技术上讲,每个成功的内存分配调用都需要与从原始分配调用中获取返回指针的分配调用相匹配。
大多数new
表达式导致调用 operator new
分配内存并在新分配的内存中构造一个对象。使用 delete
表达式破坏对象并导致调用 operator delete
那应该释放分配的内存。
有新的表达式可以在预分配的内存中构造对象(位置 new
)。这些不应与删除表达式匹配,但预分配的内存可能需要以与原始分配相对应的方式释放。
关于c++ - C++ 中的内存泄漏(通过 new+delete),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1354958/