c++ - 必须在 C++ 中删除动态分配的内存?

标签 c++ dynamic-allocation

假设我有一个 list<TreeNode>在我的程序中。每次我使用new动态分配 TreeNode分类并将其附加到列表中;当程序结束时,列表就消失了。但是,我不确定是否所有附加到它的元素都会随着列表消失而自动删除。我还需要通过列表和delete吗?所有元素我自己?

还有,内存泄漏会造成什么危害?当一个进程结束时,我认为它的内存空间将被释放,所以实际上不会留下任何损害我的计算机的东西。

最佳答案

现在,您的 list<TreeNode>因为程序已经终止而自行销毁,但现在假设您处于使用本地 list<TreeNode> 的情况。在循环或类似的东西中创建和销毁的对象。内存泄漏现在变成了您确实必须担心的事情。

最重要的是,无论在何种情况下,您的代码都不应泄漏。唯一的异常(exception)可能是单例模式或类似模式,其中可能有一些理由让对象“在没有清理的情况下死亡”。但是对于像列表类这样的东西,绝对不应该存在泄漏。

另外,如果进程不应该关闭怎么办?如果它是必须每天 24 小时运行的关键任务应用程序怎么办?泄漏现在变成了一场灾难——你或那个(现在生气的)同事将在半夜接到那个电话,因为资源耗尽而试图重启系统。

关于c++ - 必须在 C++ 中删除动态分配的内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22315294/

相关文章:

c++ - eclipse中的交叉编译器前缀和路径

c++ - 函数 C++ 中的动态分配

c++ - 我可以像 delete[3] 一样为 delete[] 提供参数吗?

mysql - c++ - 堆对象成员函数访问

c++ - Makefile:无需执行任何操作

c++ - 如何让 OpenGL 选择最近的较大 mipmap?

c++项目设计-私有(private)继承和 "is a"关系

c++ - 从堆中执行指令

c++ - 增加数组大小时 CUDA nbody tile 计算错误代码 77

c - 如何在C中实现动态数组?