是不是所有自己create的对象都要自己free(200分)

  • 主题发起人 主题发起人 张校风
  • 开始时间 开始时间

张校风

Unregistered / Unconfirmed
GUEST, unregistred user!
例如对异常对象来说:
type myException=class(Exception)
...
end;

procedure a;
begin
raise e.create('error');
end;
procedure b;
begin
try
a;
except
on e:myException do
begin
showmessage(e.message);
//这里使用完毕后需要e.free()吗?
end;
end;
end;
 
你不free 其实也没事 ,delphi 比vc 好在没用内存泄漏的事情
但最好是 free 一下,不怕一万就怕万一
 
Exception 是自动释放的,不要画蛇添足了.

create(self)
///或其它 会有"人"替你释放的.


create
create(nil) //对不起,只有你自己释放了.
 
不要吧,反正VCL自己的源代码都不手动释放 EXCEPTION对象,看来它
是自动释放的了.
 
同意jsxjd
参见:http://www.eagle-software.com/DynamicCreation.htm
 
如果你不free,如果你的运算量比较大就会有应响甚至发生益出!!
 
同意jsxjd
 
--》delphi 比vc 好在没用内存泄漏的事情
什么话?编的不好内存泄漏是经常的事。
自己做的事要负责,VCL的不用是因为他有父亲祖先代劳。
 
好像代码来自《Delphi高手突破》这本书,哈
书上那一页 说会自动 free的
他用到那
try
A();
b();
C();
except
end
A出现异常 当然就free 不再执行B,C 然后跳到except去去执行错误处理
//VCL 用一个很大的try ..except将代码包裹起来
 
如果不free有时候会出错
我用d7做了一个程序,很多的控件都是根据数据库中的内容自动创建生成的
一开是我没有free,但是当程序退出的时候就出错了,开始我还不知道怎么回师
后来在form的onclosequery中把所有的控件都free就好了。
 
异常类一般是由vcl自动处理,不需要手工free,但其它的类只要是你在程序中建立的最好手工再free,
虽然有时vcl也会自动处理,但总是不如自己动手来的放心![:)]
 
是啊。。异常类一般是由vcl自动处理,不需要手工free
 
异常类不需要自己写代码释放。
create(nil)需要释放.
create(ower),则ower释放的时侯会释放所有以他为ower的对象。
不管是何种情况,我认为都应该有自己主动释放的好习惯,而且节省资源。
 
谢谢各位,放分![:)]
 
后退
顶部