请大侠纠错(50分)

  • 主题发起人 主题发起人 wqh-2
  • 开始时间 开始时间
W

wqh-2

Unregistered / Unconfirmed
GUEST, unregistred user!

s是一全局 Tstrings 变量。
procedure TForm1.FormClose(Sender: TObject
var Action: TCloseAction);
begin
s.Free;
showmessage('now close');
end;

procedure TForm1.exit1Click(Sender: TObject);
begin
close;
end;

该程序关闭时,发生异常,但若将

s.Free;
showmessage('now close');


换为

showmessage('now close');
s.Free;

则程序正常,为何与顺序有关?
 
删除showmessage('now close');
也能正常执行
 
如果是程序整个的退出,该过程多次一举,因为系统会自动为你释放该全局变量占用的内存。
 
try this:
s.Free;
showmessage('now close');
s:=nil
//Add this line
 
能加上s:=nil
//Add this line吗


我试过,还是不行,而且s.free时已经使s无效了,怎能再s:=nil
 
好象并不会出问题。
我试了一下
 
你既然已解决了问题, 还纠什么错? 程序就是这样的,
换个位置好了的话, 就行了, 别问为什么了.
 
我认为你的程序有内存分配与回收方面的隐藏问题(在其它地方)。
把源代码贴出来。
 
有些问题是没有答案的。
 
后退
顶部