在运行时识别未释放的内存

时间:2014-09-17 07:19:50

标签: c++ windows memory-leaks c++builder madexcept

如何最好地识别在运行时未正确释放的内存?我知道几个程序在应用程序关闭时识别已分配和未释放(泄漏)的内存。但我的问题似乎是在程序执行期间(可能是一个线程)创建了一些未被释放的对象,尽管它们应该在系统完成之后使用" work"。

随着时间的推移,保持系统运行。但是当程序关闭时,内存似乎被正确释放,因此从未报告为我目前使用的MadExcept中的泄漏。

每次"工作"我如何最好地检测分配这个内存的内容?在程序终止之前运行并且不释放它?这是一个相当大的服务器系统,有大约100万行代码,几个DLL子项目和多个线程运行(40-50)。

也许有一些系统可以识别已经存活超过X min的已分配对象。让我们说选择60分钟并且系统继续运行。那么这些信息可以用来定位许多这些长生物并进行调查吗?

2 个答案:

答案 0 :(得分:0)

如果你使用的是c ++和visual studio,我认为这个link很有帮助。您可以在需要时使用_CrtMemCheckpoint和CrtMemDumpStatistics。

答案 1 :(得分:0)

我最终尝试了 Softwareverify的 C ++内存验证器的评估版。

它的工作方式与我想要的一样,能够提供内存分配的时间线等,以便我能够确定随着时间的推移累积的内容以及它的存活时间。使用它我能够识别问题并修复它。