【发布时间】:2013-03-18 12:59:59
【问题描述】:
我需要清理链接对象的动态内存。我正在研究优化问题的分支定界算法。我有一个名为“节点”的类,它保存部分解决方案的数据。我使用“新”功能创建节点。所有创建的节点都相互链接,形成一个链,就像我创建了一个手动列表一样。每个节点都知道紧随其后的最佳节点的物理地址。这个链条是动态的。使用现有节点,我生成新节点并将它们相应地链接到链,直到找到最佳解决方案。对于一些问题,当节点数量约为 30 亿(30-40 GB)时,我找到了最佳解决方案。我将我的代码设置为通过解决下一个问题,当它完成解决一个问题时(我通过在处理过程中的多个文件流来做到这一点)。我需要在通过解决另一个问题之前释放内存。当我找到最佳且不再需要节点链时,我尝试使用“删除”功能。坏事是删除 30 亿个相互链接的节点对象需要几个小时。我正在终止程序,从目录中删除已解决的文件,等待 Windows 释放 RAM,然后再次重新启动以继续我的工作。 有没有办法释放内存,同时传递给另一个问题来解决,比如终止进程所做的清理操作,还是我应该改变节点链的结构?
【问题讨论】:
标签: c++ linked-list dynamic-memory-allocation