小问题:关于释放窗体??

jianxin_js 2003-09-11 02:38:27
with TfrmTest.Create(self) do
begin
try
frmuExdata.sLvName :=sName;
frmuExdata.Show ;
finally
frmTest.Free ;
frmTest:=nil; //请问这一句要不要,如果要,是放free句前面还是后面?
end;
end;

帮忙解释一下原因,谢谢;)
...全文
27 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
linzer 2003-09-12
  • 打赏
  • 举报
回复
要吧,这是个好习惯!
hongqi162 2003-09-12
  • 打赏
  • 举报
回复
up
milerzhang 2003-09-12
  • 打赏
  • 举报
回复
佩服!FrameSniper
高手呀!
FrameSniper 2003-09-11
  • 打赏
  • 举报
回复
应该要,使用这句是为了将窗体对象指针进行释放,以免以后调用野指针出现内存错误!

具体原因如下:我们使用Free 释放对象只是将栈上的对象实体进行释放,而栈上的指向对象实体位置的对象指针的内容并没有改变!所以将来如果继续调用这个指针来进行对象的访问肯定会发生错误!所以有必要使用!或者直接使用FreeAndNil方法
dulei115 2003-09-11
  • 打赏
  • 举报
回复
frmTest:=nil;
从没用过,平时就写
try
TfrmTest.Create(self);
frmTest.Show ;
finally
frmTest.Free ;
end;
xmyyzhen 2003-09-11
  • 打赏
  • 举报
回复
Application.CreateForm(TForm1,Form1);
try
Form1.ShowModal;
finally
FreeAndNil(Form1);
end;
free007 2003-09-11
  • 打赏
  • 举报
回复
我觉得,不需要。因为free会调用destory,就自动释放掉了。

5,386

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧