delphi – 如何使用fastMM跟踪棘手的内存泄漏?

前端之家收集整理的这篇文章主要介绍了delphi – 如何使用fastMM跟踪棘手的内存泄漏?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
将项目从Delphi 2007升级到Delphi 2009后,我收到了一个未知的内存泄漏,到目前为止我一直在尝试使用fastMM来跟踪它,这是fastMM堆栈跟踪报告:
A memory block has been leaked. The size is: 20

This block was allocated by thread 0x111C,and the stack trace (return addresses) 
  at the time was:
40339E [System.pas][System][@GetMem][3412] 534873 [crtl][_malloc]
56D1C4 [canex.cpp][MidasLib][DllGetDataSnapClassObject][3918]
56D316 [canex.cpp][MidasLib][DllGetDataSnapClassObject][3961]
56D5EE [canex.cpp][MidasLib][DllGetDataSnapClassObject][4085]
562D48 [DBCommon.pas][DBCommon][TFilterExpr.PutExprNode][1583]
408E46 [System.pas][System][DynArraySetLength][20464]
56D5EE [canex.cpp][MidasLib][DllGetDataSnapClassObject][4085]
408E92 [System.pas][System][@DynArraySetLength][20486]
528C1B [Forms.pas][Forms][TCustomForm.DoCreate][3260]
171A1A [GetRawStackTrace]

The block is currently used for an object of class: Unknown

The allocation number is: 302844

有时我得到这个:

A memory block has been leaked. The size is: 20

This block was allocated by thread 0x111C,and the stack trace (return addresses) 
  at the time was:
40339E [System.pas][System][@GetMem][3412]
534873 [crtl][_malloc]
56D1C4 [canex.cpp][MidasLib][DllGetDataSnapClassObject][3918]
56D316 [canex.cpp][MidasLib][DllGetDataSnapClassObject][3961]
77DC921A [RtlAnsiStringToUnicodeString]
56D5EE [canex.cpp][MidasLib][DllGetDataSnapClassObject][4085]
7726B8F5 [GetProcAddress]
7726B907 [GetProcAddress]
589B1E [ossrv.cpp][MidasLib][DllGetDataSnapClassObject][3163]
56D5EE [canex.cpp][MidasLib][DllGetDataSnapClassObject][4085]
408E92 [System.pas][System][@DynArraySetLength][20486]

The block is currently used for an object of class: Unknown

有没有更好的方法来弄清楚导致内存泄漏的真正原因?

解决方法

这个内存泄漏是由Delphi bug QC #67709引起的

它是由最后一次Delphi 2009更新修复的,难怪我无法修复它.

猜你在找的Delphi相关文章