Subject:
CNSqlite中有内存泄露
[Print This Page]
Author:
mymousecat
Time:
2008-1-9 15:46
Subject:
CNSqlite中有内存泄露
只简单的使用下列代码:
var
db:TLiteDB;
begin
db:=TLiteDB.Create();
db.Free;
end;
用CheckMem生成的报告如下:
===== Project5.exe,2008/1/9 15:41:09 =====
可用地址空间 : 1280 KB(1310720 Byte)
未提交部分 : 0 KB(0 Byte)
已提交部分 : 1280 KB(1310720 Byte)
空闲部分 : 1277 KB(1307756 Byte)
已分配部分 : 2 KB(2560 Byte)
全部小空闲内存块 : 256 KB(262460 Byte)
全部大空闲内存块 : 310 KB(318432 Byte)
其它未用内存块 : 709 KB(726864 Byte)
内存管理器消耗 : 0 KB(404 Byte)
地址空间载入 : 0%
当前出现 2 处内存漏洞 :
0) 0000000000E63F40 - 15089440($E63F20)字节 - 不是对象
1) 0000000000E9DAC0 - 15325600($E9D9A0)字节 - (未命名): TStringList (56 字节) - In Classes.pas
Author:
mymousecat
Time:
2008-1-9 16:16
Subject:
两处问题找到了
费了我10分钟,两处问题终于找到,第一个是在TLiteDB的析构中,TStringList的FFields没有释放,第二个是在SystemErrorMsg函数中,用GetMem申请的内存,没有释放,我那个汗呀,这么简单的错误,为什么要犯呢,以后我真应该考虑考虑是否该自已写组件了!!!!
Author:
Passion
Time:
2008-1-9 17:18
感谢您的报告。惭愧,CnPack组件包一直处于开发期间,其中有错误在所难免。CnSQLite也是移植而来,提交者并未对其进行过比较完全的测试,因此给您带来了不便,在此说声抱歉。
Author:
mymousecat
Time:
2008-1-9 17:24
没关系,我想知道的是,我提交的这些错误,在下一个版本中,可以改正吗?
Author:
Passion
Time:
2008-1-9 22:56
可以。这几天就可以改正。不过改正好的代码放在CVS里,估计暂时不会提供zip包供下载。您可以通过访问CVS来获得最新代码。
下一版本的CnWizards发布时,CnPack组件包才会重新打包供下载。
Author:
shenloqi
Time:
2008-1-10 09:55
很多CnPack中的组件没有经过内存泄漏的测试(不少是大家贡献的组件移植而来),所以的确可能会有内存泄漏的问题存在,如果发现了泄漏,烦请继续报告,我们会及时更新的。
Author:
mymousecat
Time:
2008-1-10 10:26
好的,我会的
Author:
Passion
Time:
2008-1-12 21:20
CVS上最新的代码中此问题已经修复。
Welcome to CnPack Forum (http://bbs.cnpack.org/)
Powered by Discuz! 5.0.0