假设我有一个 list<TreeNode>
在我的程序中。每次我使用new
动态分配 TreeNode
分类并将其附加到列表中;当程序结束时,列表就消失了。但是,我不确定是否所有附加到它的元素都会随着列表消失而自动删除。我还需要通过列表和delete
吗?所有元素我自己?
还有,内存泄漏会造成什么危害?当一个进程结束时,我认为它的内存空间将被释放,所以实际上不会留下任何损害我的计算机的东西。
最佳答案
现在,您的 list<TreeNode>
因为程序已经终止而自行销毁,但现在假设您处于使用本地 list<TreeNode>
的情况。在循环或类似的东西中创建和销毁的对象。内存泄漏现在变成了您确实必须担心的事情。
最重要的是,无论在何种情况下,您的代码都不应泄漏。唯一的异常(exception)可能是单例模式或类似模式,其中可能有一些理由让对象“在没有清理的情况下死亡”。但是对于像列表类这样的东西,绝对不应该存在泄漏。
另外,如果进程不应该关闭怎么办?如果它是必须每天 24 小时运行的关键任务应用程序怎么办?泄漏现在变成了一场灾难——你或那个(现在生气的)同事将在半夜接到那个电话,因为资源耗尽而试图重启系统。
关于c++ - 必须在 C++ 中删除动态分配的内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22315294/