最近我发现 Delphi 有一个全局变量叫做 ReportMemoryLeaksOnShutdown,当设置为 True 时,会在应用程序关闭时检测内存泄漏。我从阅读另一个相关问题的一些评论中发现了这些信息:What is the best tool to detect memory leaks in Delphi。
所以我在项目源代码中加入了
我已经仔细检查了代码,但我看不出泄漏可能来自哪里,现在我需要找到它们,因为如果应用程序退出时报告内存泄漏,则非常意味着运行时存在内存泄漏,这将增加大小并且是不好的!
从上面的链接中推荐了第三方工具,如 Eureka Log。是否有一种只使用 IDE 和调试器的方法来帮助我找到和修复问题区域?
更新
我成功解决了大约6个内存泄漏问题,发现与 MDI 子窗口有关。这些子窗口在列表框中保存了一些指针数据,在主应用程序关闭时,它没有正确释放子窗口,现在已经解决了。
现在我还剩下这两个错误:
所以我在项目源代码中加入了
ReportMemoryLeaksOnShutdown := True;
现在当我的应用程序关闭时,它会检测到很多内存泄漏。我的第一反应是检查是否正确释放了创建的对象(使用 try..finally..free 等)。我已经仔细检查了代码,但我看不出泄漏可能来自哪里,现在我需要找到它们,因为如果应用程序退出时报告内存泄漏,则非常意味着运行时存在内存泄漏,这将增加大小并且是不好的!
从上面的链接中推荐了第三方工具,如 Eureka Log。是否有一种只使用 IDE 和调试器的方法来帮助我找到和修复问题区域?
更新
我成功解决了大约6个内存泄漏问题,发现与 MDI 子窗口有关。这些子窗口在列表框中保存了一些指针数据,在主应用程序关闭时,它没有正确释放子窗口,现在已经解决了。
现在我还剩下这两个错误: