关于对象释放内存的问题 (100分)

  • 主题发起人 主题发起人 looyo
  • 开始时间 开始时间
L

looyo

Unregistered / Unconfirmed
GUEST, unregistred user!
1,设计时放在窗体上的控件需要在窗体关闭的时候写代码释放内存吗?
2, 运行时动态生成的控件需要在窗体关闭的时候写代码释放内存吗?
3,create(nil) 括号里的参数是不是nil有什么区别呢
 
1、不要
2、要
 
1、不需要;
2、如果你是T.Create(nil);最好自己释放,其他的由它的owner释放吧。
 
1.不需要
2.只要用Create创建的对象,都要释放,否则,容易导致内存泄漏
 
固定的不需要释放
用CREATER产生的需要释放。
 
固定的肯定不需要,动态的假如已经在容器中了就不需要了
with TEdit.Create(Self) do
begin
....
Parent := Self;
end;
这样创建的就不需要了,因为动态创建的Edit已经在Form容器中了,
 
1。不需要另写代码
2。看你的create是怎么写的
3。create(nil)必须手动释放你所创建的对象。
nil参数指明被创建对象的宿主
 
释放的时候用:
create 之后用
free 来释放内存
 
记住这个就行了:凡是创建的都需要释放。
1,不是你创建的,不用。
2,是你创建的,用。
3,同ziyu
 
self指的是控件所在的form,
create()有3種;
1.)create(appcation);由程序free
2.)create(self);由所在form free
3.)create(nil);手動free
 
1.不需要;
2) create(nil);
 
设计时放置在窗体上的控件,Delphi自动设置的控件的Owner属性为窗体,故由窗体负责释放。创建控件时如果指定了Owner,则由Owner负责释放。如果没有指定,则得自己负责释放
 
有owner就不用手工释放,owner释放时会自动释放他的component

因为放在窗体上的控件都有owner,所以不用自己释放;
运行时创建的控件,
1)create(xxx),则xxx释放时会自动释放创建的控件
2)create(nil),没有owner,需要自己free
 
后退
顶部