[求助]FastMM内存泄露报告解读(100分)

K

kernelj

Unregistered / Unconfirmed
GUEST, unregistred user!
内存泄露哦报告如下,如何根据这份报告找到代码中问题所在?望各位读多指教,小弟在此谢过。

----------2008/9/15 14:53:41----------
一个内存块已泄露. 大小是: 28
该内存块本次被分配时的堆栈跟踪(调用返回地址):
402973 [System][InternalFlush]
4034DF [System][NotifyAnyExcept]
40384E [System][@HandleFinally]
42926E [StdCtrls][TCustomMemo.SetAlignment]
404037 [System][@LStrFromPWCharLen]
45B1C3 [IdTCPServer]
403F90 [System][@NewAnsiString]
403FF7 [System][WCharFromChar]
4060EB [Windows][CreatePalette]
4641F8
该内存块当前被用于一个属于以下类的对象: TCriticalSection
分配号码是: 329
由指针所指地址开始, 256字节的内存当前的内容 7FF7BD28:
3C 92 42 00 F8 69 14 00 FF FF FF FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 71 04 78 7D
00 00 00 00 49 C0 F7 7F 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 4E 01 00 00 73 29 40 00
DF 34 40 00 4E 38 40 00 32 20 42 00 B2 7D 43 00 7B CD 44 00 74 D7 44 00 EF D5 44 00 D4 D6 44 00
6C FB 92 7C 93 29 40 00 FD 34 40 00 99 38 40 00 87 20 42 00 43 35 40 00 27 7F 43 00 05 CE 44 00
E8 D9 44 00 02 DA 44 00 1C BD 44 00 18 00 00 00 B0 06 42 00 2D F2 BF 01 84 BC 46 00 80 80 80 80
80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 D2 0D 40 FE 80 80 80 80 00 00 00 00 19 BF F7 7F
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 54 01 00 00 73 29 40 00 DF 34 40 00 4E 38 40 00
14 35 40 00 4E 38 40 00 C7 3D 42 00 0C 68 42 00 B2 D7 44 00 EF D5 44 00 D4 D6 44 00 93 29 40 00
< ? B . ? i . .
 
帮你顶一下.
 
先通篇查找一下TCriticalSection 这个类创建的地方,没有那里没有FREE,如果再找不到
试下面的方法。
var
p:pointer;
CriticalSection:TCriticalSection ;
begin
p:=Pointer($7FF7BD28);
CriticalSection:=TCriticalSection (p);
//进行强制转换得到泄露地址的类,再根据你的CriticalSection实例的特殊性来确认
//是那个实例没有FREE了。
 
有时候是本身delphi的代码问题,你就象楼上的一样,写一个demo,做一个TCriticalSection,按照正常的情况,进行释放,看有没有报同样的错误。如果
一样的有这个内存泄漏,那么就是TCriticalSection的实现问题了。如果没有,
那你就好好检查一下你自己的代码。
 
顶一下,没研究过
 
顶部