【发布时间】:2021-05-21 11:53:49
【问题描述】:
有些客户在关闭我的应用程序时有时会报告错误:
这有点令人惊讶,因为:
-
在卸载 FastMM 后调用 GetMEM 有点奇怪(用户报告他正在使用我的应用程序的命令行功能,所以我会尝试对此进行调查,但在应用程序终止后我不会调用任何内容。但是好的,值得调查的事情)
-
我正在使用发布模式设置,那么 FastMM 怎么会显示错误消息? 这对我来说是最重要的问题...
这些是我用于发布构建的定义:
{$undef FullDebugMode}
{$undef EnableMemoryLeakReporting}
{$undef CheckHeapForCorruption}
{$undef UseOutputDebugString}
{$undef RawStackTraces}
{$undef LogErrorsToFile}
{$undef LogMemoryLeakDetailToFile}
{$undef ClearLogFileOnStartup}
{$undef HideExpectedLeaksRegisteredByPointer}
{$define ASMVersion}
{$define AssumeMultiThreaded}
应用程序是多线程的,但不与 dll 或类似的共享内存管理器
【问题讨论】:
-
可能是在应用程序终止时困扰您的挥之不去的线程。不看代码很难说...
-
有什么办法可以防止FastMM显示错误信息?
-
我会调查的。但我自己在 15 年多的时间里从未见过这个问题。但是,是的。但是,在发布版本中,我认为最好抑制任何错误。特别是如果在应用程序终止(并且所有内存释放回操作系统)时发生问题
-
这确实表明您的程序某处存在缺陷