请问有什么好办法或者好的工具检测到程序里没有free掉的对象吗?(50分)

  • 主题发起人 主题发起人 蔓草
  • 开始时间 开始时间

蔓草

Unregistered / Unconfirmed
GUEST, unregistred user!
在写程序的时候,尤其是当程序写的很多的时候,可能有写对象如控件或者strings等
对象create后,忘记了free掉,有什么好的办法或者工具能帮忙检测一个
程序里有没有free掉的对象吗?
 
這個問題題得好﹐看來你寫程序越來越厲害了。
 
我觉得这个要养成好习惯,就是在写 Create 时,马上写 Free ,免得忘记。
 
Memory Sleuth!非常好的东西,FOR DELPHI的,能指出哪一行代码申请的内存(或GDI等
任何资源)未释放。
自己在网上搜一把,应该有下载的。(现在是2.01版吧)
 
dadabox:谢谢你了:)
zhihuali:关键是我的程序里有很过函数,返回的是tstrings,这样就不能在一起create和free
所以我害怕自己的程序里有一点疏忽就有内存泄露的地方!
Huzzz:谢谢你了!
 
将对象作为函数的返回值来返回,
本来就不是一个好习惯,
更常规的做法应该遵循“谁创建,谁释放”的原则,
即在调用者中创建/释放TStringList。

还有好习惯:一个对象,通常都应该有一个“所有者”对象,
(即使最上层的对象,起码也属于Application)
在所有者对象中保持对所有自己拥有的对象的引用。
在对象的析构函数中,同时释放自己拥有的所有对象。
实际上,如果你的对象都继承自TComponent,它已经帮你这样做了。
 
坏蟑螂:
; 说得有道理。
; 大部分情况我们都会自己释放,但程序大了就难免有失手。如果用了别人的控件也有
可能,还有各种GDI资源、HANDLE、TIMER、HOOK、EVENT。。。。。(特别是GDI资源,
总共就那一点点,如果有忘记释放,系统很快就崩掉了)
 
用Memory Sleuth2(感觉最好的),其实很多调试软件都可以,跟踪一下嘛,当然如果存在隐性内存漏洞,
呵呵!谁也救不了你,所以关键是养成一个良好的代码编写习惯!
 
在写 Create 时,马上写 Free。习惯了啦
 
Memory Sleuth2,具体在什么地方下载
 
我怎么找不到
 
我还是没有找到
 
你在www.google.com那,输入“Memory Sleuth+下载”
 
试试看 boundscheck for delphi!
 
还是没有找到,有人有的话请发到我的信箱里,谢谢!
 
boundscheck for delphi
好像没有什么用~~~我安装后,也不提示什么,于是我就Del了它了
 
MemProof (好像叫这个名字,很强劲的,强烈推荐)
 
多人接受答案了。
 
后退
顶部