c++ - C++ 中的内存泄漏(通过 new+delete)

标签 c++ memory-leaks

为了使应用程序没有内存泄漏,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/

相关文章:

C++ - 内存泄漏 : where is the pointer (meta) information stored?

java - Wildfly 10 内存泄漏问题

php 使用 system()/shell_exec()/exec() 运行终端应用程序,但只显示一半的输出

c++ - 对 C++ 嵌套依赖类型名称感到困惑

C++项目源码布局

Python - 解决内存泄漏问题

ios - 更改图像色调颜色内存泄漏

c++ - 如何检查 Linux 上 C++ Qt 应用程序中的内存泄漏?

c++ - 将可变数量的参数转换为显式数量

c++ - 在 MKL 中求矩阵的矩阵指数