FastMM 在关闭应用程序时在发布版本中显示错误
FastMM showing error in release builds when closing application
我有一些客户在关闭我的应用程序时有时会报告错误:
由于以下原因,这有点令人惊讶:
卸载 FastMM 后调用 GetMEM 有点奇怪(用户报告说他正在使用我的应用程序的命令行功能,所以我会尝试调查一下,但我不会在应用程序终止后调用任何东西.但是好吧,值得研究的东西)
我用的是release模式设置,怎么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 source code,你可以这样做:
{$undef DetectMMOperationsAfterUninstall}
为了避免这个错误信息。
源代码摘录:
{$ifdef DetectMMOperationsAfterUninstall}
{Invalid handlers to catch MM operations after uninstall}
function InvalidFreeMem(APointer: Pointer): {$ifdef fpc}NativeUInt{$else}Integer{$endif}; forward;
function InvalidGetMem(ASize: {$ifdef XE2AndUp}NativeInt{$else}{$ifdef fpc}NativeUInt{$else}Integer{$endif}{$endif}): Pointer; forward;
function InvalidReallocMem({$ifdef fpc}var {$endif}APointer: Pointer; ANewSize: {$ifdef XE2AndUp}NativeInt{$else}{$ifdef fpc}NativeUInt{$else}Integer{$endif}{$endif}): Pointer; forward;
function InvalidAllocMem(ASize: {$ifdef XE2AndUp}NativeInt{$else}{$ifdef fpc}NativeUint{$else}Cardinal{$endif}{$endif}): Pointer; forward;
function InvalidRegisterAndUnRegisterMemoryLeak(APointer: Pointer): Boolean; forward;
{$endif}
我有一些客户在关闭我的应用程序时有时会报告错误:
由于以下原因,这有点令人惊讶:
卸载 FastMM 后调用 GetMEM 有点奇怪(用户报告说他正在使用我的应用程序的命令行功能,所以我会尝试调查一下,但我不会在应用程序终止后调用任何东西.但是好吧,值得研究的东西)
我用的是release模式设置,怎么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 source code,你可以这样做:
{$undef DetectMMOperationsAfterUninstall}
为了避免这个错误信息。
源代码摘录:
{$ifdef DetectMMOperationsAfterUninstall}
{Invalid handlers to catch MM operations after uninstall}
function InvalidFreeMem(APointer: Pointer): {$ifdef fpc}NativeUInt{$else}Integer{$endif}; forward;
function InvalidGetMem(ASize: {$ifdef XE2AndUp}NativeInt{$else}{$ifdef fpc}NativeUInt{$else}Integer{$endif}{$endif}): Pointer; forward;
function InvalidReallocMem({$ifdef fpc}var {$endif}APointer: Pointer; ANewSize: {$ifdef XE2AndUp}NativeInt{$else}{$ifdef fpc}NativeUInt{$else}Integer{$endif}{$endif}): Pointer; forward;
function InvalidAllocMem(ASize: {$ifdef XE2AndUp}NativeInt{$else}{$ifdef fpc}NativeUint{$else}Cardinal{$endif}{$endif}): Pointer; forward;
function InvalidRegisterAndUnRegisterMemoryLeak(APointer: Pointer): Boolean; forward;
{$endif}