蔓 蔓草 Unregistered / Unconfirmed GUEST, unregistred user! 2001-11-16 #1 在写程序的时候,尤其是当程序写的很多的时候,可能有写对象如控件或者strings等 对象create后,忘记了free掉,有什么好的办法或者工具能帮忙检测一个 程序里有没有free掉的对象吗?
Z zhihuali Unregistered / Unconfirmed GUEST, unregistred user! 2001-11-16 #3 我觉得这个要养成好习惯,就是在写 Create 时,马上写 Free ,免得忘记。
H Huzzz Unregistered / Unconfirmed GUEST, unregistred user! 2001-11-16 #4 Memory Sleuth!非常好的东西,FOR DELPHI的,能指出哪一行代码申请的内存(或GDI等 任何资源)未释放。 自己在网上搜一把,应该有下载的。(现在是2.01版吧)
蔓 蔓草 Unregistered / Unconfirmed GUEST, unregistred user! 2001-11-17 #5 dadabox:谢谢你了:) zhihuali:关键是我的程序里有很过函数,返回的是tstrings,这样就不能在一起create和free 所以我害怕自己的程序里有一点疏忽就有内存泄露的地方! Huzzz:谢谢你了!
dadabox:谢谢你了:) zhihuali:关键是我的程序里有很过函数,返回的是tstrings,这样就不能在一起create和free 所以我害怕自己的程序里有一点疏忽就有内存泄露的地方! Huzzz:谢谢你了!
坏 坏蟑螂 Unregistered / Unconfirmed GUEST, unregistred user! 2001-11-17 #6 将对象作为函数的返回值来返回, 本来就不是一个好习惯, 更常规的做法应该遵循“谁创建,谁释放”的原则, 即在调用者中创建/释放TStringList。 还有好习惯:一个对象,通常都应该有一个“所有者”对象, (即使最上层的对象,起码也属于Application) 在所有者对象中保持对所有自己拥有的对象的引用。 在对象的析构函数中,同时释放自己拥有的所有对象。 实际上,如果你的对象都继承自TComponent,它已经帮你这样做了。
将对象作为函数的返回值来返回, 本来就不是一个好习惯, 更常规的做法应该遵循“谁创建,谁释放”的原则, 即在调用者中创建/释放TStringList。 还有好习惯:一个对象,通常都应该有一个“所有者”对象, (即使最上层的对象,起码也属于Application) 在所有者对象中保持对所有自己拥有的对象的引用。 在对象的析构函数中,同时释放自己拥有的所有对象。 实际上,如果你的对象都继承自TComponent,它已经帮你这样做了。
H Huzzz Unregistered / Unconfirmed GUEST, unregistred user! 2001-11-17 #7 坏蟑螂: ; 说得有道理。 ; 大部分情况我们都会自己释放,但程序大了就难免有失手。如果用了别人的控件也有 可能,还有各种GDI资源、HANDLE、TIMER、HOOK、EVENT。。。。。(特别是GDI资源, 总共就那一点点,如果有忘记释放,系统很快就崩掉了)
坏蟑螂: ; 说得有道理。 ; 大部分情况我们都会自己释放,但程序大了就难免有失手。如果用了别人的控件也有 可能,还有各种GDI资源、HANDLE、TIMER、HOOK、EVENT。。。。。(特别是GDI资源, 总共就那一点点,如果有忘记释放,系统很快就崩掉了)
Y YB_unique Unregistered / Unconfirmed GUEST, unregistred user! 2001-11-17 #8 用Memory Sleuth2(感觉最好的),其实很多调试软件都可以,跟踪一下嘛,当然如果存在隐性内存漏洞, 呵呵!谁也救不了你,所以关键是养成一个良好的代码编写习惯!
萧 萧月禾 Unregistered / Unconfirmed GUEST, unregistred user! 2001-11-19 #14 你在www.google.com那,输入“Memory Sleuth+下载”
A Adnil Unregistered / Unconfirmed GUEST, unregistred user! 2001-11-19 #15 试试看 boundscheck for delphi!
H hsw Unregistered / Unconfirmed GUEST, unregistred user! 2001-11-22 #17 boundscheck for delphi 好像没有什么用~~~我安装后,也不提示什么,于是我就Del了它了
W wrench Unregistered / Unconfirmed GUEST, unregistred user! 2001-11-23 #18 MemProof (好像叫这个名字,很强劲的,强烈推荐)