在我的项目文件上使用FastMM花了一周的时间后,我现在已经完成了我的程序,据我所知,删除了FastMM497引发的所有错误消息。现在,我想从我的程序中删除FastMM并在没有它的情况下运行。 我能这样做吗?如果我删除它并运行我的程序,我的程序会开始泄漏内存吗?据我所知,我已将项目选项设置删除并更改为之前的状态。
但是,我确实注意到我的程序在运行可执行文件时要大得多。最初,我的程序在启动时曾经是大约5,000KB到6,000KB。在完成FastMM之后,现在任务管理器中的大约是21,000KB。我正确地看着这个吗?
我可以将FastMM497留在我的程序中并按原样部署给我的用户吗?
答案 0 :(得分:7)
好吧,我认为你应该保留FastMM的完整版本,因为大概你会继续开发你的程序,你可能会无意中引入更多的内存泄漏。让FastMM告诉你这些有用的事情。
但是,您不想做的是使用FastMM调试选项向您的用户发布版本。这速度要慢得多,占用的内存要多得多,并且还会报告您可能不希望用户看到的诊断信息。
通常做的是有两个构建配置,DEBUG和RELEASE。构建DEBUG时,您拥有所有诊断选项。在构建RELEASE时,将所有关闭。您通常会通过条件定义来配置它,这些控件设置在FastMM包含文件FastMMOptions.inc。
中我配置它的方式是DEBUG配置定义了一个名为UseDebugFastMM
的条件而RELEASE配置没有。然后在FastMMOptions.inc中,通过启用所有调试功能(如果已定义)来响应该条件。
说了这么多,我实际发布给客户的内容根本就不使用FastMM,因为我发现它在线程争用下表现不佳。相反,我使用一个自定义内存管理器,只需委托malloc()
msvcrt.dll
,我发现{{1}}表现更好。但它全部由条件控制,非常值得让项目配置得很好,以便您可以根据需要轻松进行实验。