在delphi中关闭窗口,是否用nil更好些? ( 积分: 10 )

  • 主题发起人 主题发起人 东方飞雪
  • 开始时间 开始时间

东方飞雪

Unregistered / Unconfirmed
GUEST, unregistred user!
窗口的关闭用close 即可,
但是我发现许多大工程里面窗口较多,关闭时都用form:=nil
两者区别是什么?还有效率如何?
 
窗口的关闭用close 即可,
但是我发现许多大工程里面窗口较多,关闭时都用form:=nil
两者区别是什么?还有效率如何?
 
close 是直接关闭,
后者资源就释放了
 
要注意的一点是当你使用form:=nil时,尤其是当这个窗体是你自己创建的,那么在使用
form:=nil前应先form.free,否则form的指针项被你置空了,但它指向的具体内容却还没有释放(其实form仅仅是一个指针),会造成内存泄漏的。
另外,close只是关闭(也可以理解成最小化),你还可以调用form.show使它重新现出来,但如果form.free;form:=nil;后,那么该窗体就被销毁了,除非你重新创建,否则是无法
show出来的 :)
 
全局:
var
form: TForm;
procedure...
begin
if Assigned(form) then
FreeAndNil(form);
...
end;

局部使用:
procedure...
var
form: TForm;
begin
form := TForm.Create(nil);
try
form.ShowModal;
finally
form.Free;
end;
...
end;
 
建议用free它可以检查空指针
 
全局变量或类成员变量释放后最好置为nil,以表示已经释放。
只使用一次的局部变量无所谓。
 

Similar threads

S
回复
0
查看
695
SUNSTONE的Delphi笔记
S
S
回复
0
查看
783
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部