1

在我的项目文件上使用 FastMM 运行了一周后,我现在已经完全完成了我的程序,并且据我所知,除了 3 个由 FastMM497 引发的错误消息之外,我已经删除了所有错误消息。现在,我想从我的程序中删除 FastMM 并在没有它的情况下运行。我可以这样做吗?如果我删除它并运行我的程序,我的程序会开始泄漏内存吗?据我所知,我已删除并将我的项目选项设置更改回以前的方式。

但是,当我运行可执行文件时,我确实注意到我的程序要大得多。最初,我的程序启动时大约为 5,000KB 到 6,000KB。通过 FastMM 工作后,现在它在任务管理器中约为 21,000KB。我看对了吗?

我可以将 FastMM497 留在我的程序中并按原样部署给我的用户吗?

4

1 回答 1

7

好吧,我认为您应该保留 FastMM 的完整版本,因为您可能会继续开发您的程序,并且您可能会无意中引入更多的内存泄漏。让 FastMM 告诉您这些帮助。

但是,您不想做的是向您的用户发布使用 FastMM 调试选项的版本。这要慢得多并且消耗更多内存,并且还会报告您可能不希望用户看到的诊断信息。

通常做的是有两种构建配置,DEBUG 和 RELEASE。构建 DEBUG 时,您拥有所有诊断选项。当您构建 RELEASE 时,您将其全部关闭。您通常会通过条件定义 FastMM 包含文件 FastMMOptions.inc 中的哪些控制设置来配置它。

我配置它的方式是 DEBUG 配置定义了一个调用条件UseDebugFastMM,而 RELEASE 配置没有。然后在 FastMMOptions.inc 中,我通过启用所有调试功能(如果已定义)来响应该条件。

说了这么多,我实际上发布给我的客户的东西根本没有使用 FastMM,因为我发现它在线程争用下表现不佳。相反,我使用了一个自定义内存管理器,它简单地委托给我发现性能更好的malloc()待发现对象。msvcrt.dll但这一切都是由条件控制的,值得很好地配置项目,以便您可以在需要时轻松进行试验。

于 2011-03-25T20:17:10.750 回答