Subject: CnGraphics.pas 含有内存泄露 [Print This Page]
Author:
freespace8 Time: 2007-8-2 22:41 Subject: CnGraphics.pas 含有内存泄露
行 2685-2686
原代码
if Assigned(FCanvas) then
TCnCanvas(FCanvas).FreeContext; // 释放DC
改为
if Assigned(FCanvas) then
TCnCanvas(FCanvas).Free; // 释放DC
即可解决。
fastmm报的代码
21 - 28 bytes: TBrush x 3, TPen x 3
29 - 36 bytes: TFont x 3, Unknown x 2
53 - 68 bytes: Unknown x 1
85 - 100 bytes: TCnCanvas x 3
Author:
zjy Time: 2007-8-6 08:33 Subject: 多谢报告!
经检查,TCnBitmap确实存在内存泄漏,FCanvas在TCnBitmap中创建了而没有释放。
这个单元是2002年在Win98下写的,当时设计时考虑到Win98下GDI资源有限的情况,所以增加了很多GDI句柄动态处理的代码,现在来看在XP下是没什么意义了。
TCnCanvas.FreeContext用于释放图形句柄资源,FCanvas对象本身在TCnBitmap的析构器中释放更为合理。近期我会将修改过的代码提交到CVS上。
Welcome to CnPack Forum (http://bbs.cnpack.org/) |
Powered by Discuz! 5.0.0 |