【问题标题】:How to find where the memory leak are? [duplicate]如何找到内存泄漏的位置? [复制]
【发布时间】:2018-03-22 09:45:17
【问题描述】:

我已启用内存泄漏报告:

ReportMemoryLeaksOnShutdown := True;

当我关闭我的程序时,我会收到这样的内存泄漏报告:

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

【问题讨论】:

  • 在代码中搜索这些漏洞并解决它们。
  • 我不明白这些票数接近的原因。跟踪应用程序中的内存泄漏是一个与编程直接相关的问题。
  • 这是一个与编程直接相关的问题,当您努力寻找这些漏洞并显示您为修复它们所做的尝试时

标签: delphi


【解决方案1】:

您可以使用LeakCheck(或 FastMM 完整调试模式)。 LeakCheck 输出分配的堆栈跟踪(如果启用)。它甚至可以输出泄漏的依赖关系图,以便您找到根本原因。

检漏方式:

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

【讨论】:

    猜你喜欢
    • 2014-08-26
    • 2020-08-19
    • 1970-01-01
    • 1970-01-01
    • 2012-05-16
    • 2011-01-09
    • 2013-04-04
    • 1970-01-01
    • 2011-05-25
    相关资源
    最近更新 更多