3
我调试我与FastMM程序,它似乎很多内存泄漏是报告似乎合法的内存分配不实际内存泄漏。FastMM是否仅报告内存泄漏和内存分配?
例如,
A memory block has been leaked. The size is: 20
This block was allocated by thread 0xD44, and the stack trace (return addresses) at the time was:
404902 [System.pas][System][@GetMem][3693]
406597 [System.pas][System][TObject.NewInstance][11044]
406B2A [System.pas][System][@ClassCreate][12121]
60A1D2 [CtrlObjs.pas][Ctrlobjs][TConnObj.Create][430]
61703B [Control.pas][Control][TControlMgr.FindLinks][854]
60ACB2 [CtrlObjs.pas][Ctrlobjs][TControlObject.FindLink][746]
60E2A3 [CtrlObjs.pas][Ctrlobjs][TDelayControl.EvalPulse][2105]
60E4C0 [CtrlObjs.pas][Ctrlobjs][TDelayControl.Evaluate][2193]
6102D4 [CtrlObjs.pas][Ctrlobjs][TLineControl.Evaluate][3155]
60ABF1 [CtrlObjs.pas][Ctrlobjs][TControlObject.ActiveCount][711]
6105D8 [CtrlObjs.pas][Ctrlobjs][TLineControl.ActiveCount][3261]
The block is currently used for an object of class: TConnObj
TConnObj是经常被用来创建一个对象,当程序不再需要它被销毁类。然而,FastMM报告它是实际的内存泄漏。那么,您如何判断在查看FastMM内存泄漏日志文件时是哪个?
我经常包含数千个我没有明确的分类,在应用程序退出对象的缓冲池。我不喜欢在内部传递指向所有这些缓冲区等的指针。我猜我会离开泄漏报告:( – 2012-04-17 23:12:00
@MartinJames,那么我希望没有人会永远不必为你的代码工作,这使得不可能检查真正的泄漏 – 2012-04-18 02:25:27
@马丁这不像你必须写数以千计的电话到RegisterExpectedMemoryLeak – 2012-04-18 05:43:43