如何找到内存泄漏的位置?

时间:2018-03-22 09:45:18

标签: delphi

我已启用内存泄漏报告:

ReportMemoryLeaksOnShutdown := True;

当我关闭我的程序时,我有一个像这样的内存泄漏报告:

enter image description here

但是如何确切地找到哪些对象没有被释放?

1 个答案:

答案 0 :(得分:5)

您可以使用LeakCheck(或FastMM完全调试模式)。 LeakCheck输出分配的堆栈跟踪(如果已启用)。它甚至可能输出泄漏的依赖图,因此你得到了根本原因。

LeakCheck方式:

  • 下载LeakCheck(您可以使用Delphinus)
  • 在编译器选项中启用MAP文件生成
  • LeakCheck, LeakCheck.Setup.Trace添加到DPR uses部分
  • 可选:将LeakCheck.Report.FileLog添加到uses(在扫描内存时小心使用) - 它生成.dot文件,您可以通过Graphviz管道生成泄漏图< / LI>
  • 运行您的应用
  • 分析输出