gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 18:40:14 26 4
gpt4 key购买 nike

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

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com