在Delphi中检测内存泄漏的最佳工具是什么

时间:2009-01-06 10:33:41

标签: delphi memory-leaks

检测内存泄漏的最佳工具是什么。

免费而非免费。

由于

9 个答案:

答案 0 :(得分:37)

FastMM是一款免费的(源可用)内存泄漏检测器,已集成在最新的Delphi版本中。我从来不需要任何其他东西。

在编码时限制内存泄漏的可能性要好得多,而不是在以后找到它们。一些提示:

始终在代码中使用try和finally来释放创建的对象。最好立即编写此代码,然后编写代码以使用对象。更好地利用代码模板等IDE功能。

仅在绝对必要时使用返回动态分配对象的函数。将对象作为参数传递通常比创建并返回它们更好。例如这个

procedure getChoices(var AChoices: TStrings);

会比

好多了
function getChoices: TStrings;

因为没有意外泄漏创建的TStrings对象的可能性。

答案 1 :(得分:19)

我们在Delphi 7中使用EurekaLog。它是一个异常处理程序组件,它提供有关异常(包括callstack!环境变量等)的非常详细的信息,即使对于访问冲突也是如此。但另一个很棒的功能是你可以告诉它内存泄漏的错误,它显示了首先分配内存/对象的确切代码行!这是一个商业产品,但我仍然强烈推荐它。

答案 2 :(得分:14)

我建议使用完整的FastMM4版本而不是Delphi中包含的版本。完整版本为您提供了一个完整而详细的报告,而不是对话框。将它与自制的'memoryleak-logfile-different'相结合,你可以为现有的bughunt设置。

答案 3 :(得分:13)

AQTime非常好。它还可以执行其他操作,例如性能分析。并且它不需要对代码进行任何更改。当然使用调试信息进行编译有助于提供更好的结果。

答案 4 :(得分:10)

我总是使用ReportMemoryLeaksOnShutdown:=(DebugHook<> 0); 所以如果我正在调试,我只会报告泄漏。

ps想把它放在评论中,但我还没有权利..

答案 5 :(得分:7)

您可能需要查看此CodeRage 2会话:Fighting Memory Leaks for Dummies。 它主要说明如何使用FastMM来防止/检测Delphi中的内存泄漏。适用于D2007,但仍与D2009相关。

答案 6 :(得分:7)

FastMM非常好。我知道Delphi的3或4个免费内存管理器。检查所有它们需要不到一个小时,因为通常它们只需要3行代码就可以嵌入到项目中。

答案 7 :(得分:4)

我使用MadExcept因为它是免费供个人使用。

答案 8 :(得分:1)

尝试UMLD 1.0我们已经尝试过并经过测试!! 用于Delphi开发的Leakfree Delphi应用程序开发和错误报告工具的智能解决方案。

http://www.torry.net/authorsmore.php?id=7616&sort=ID