问一个有关内存释放的问题。 ( 积分: 10 )

  • 主题发起人 主题发起人 mill666
  • 开始时间 开始时间
M

mill666

Unregistered / Unconfirmed
GUEST, unregistred user!
我写了一个程序,有一个主窗体form1,form1上有一个主菜单,通过点击上面的菜单项,动态生成窗口form2,就是form2:=Tform2.create(nil)生成,form2上的一些控件也是动态create出来的,通过form2.showmodal显示form2,然后通过form2上一个按钮点击执行一个段程序,然后form2自动关闭,包括内存释放。我在 form2的destroy的事件里面执行有关内存释放的操作:
for i:=0 to form2.ComponentCount-1 do
begin
form2.Components.Free;
end;
然后在form1里面调用form2.free;
可是好像内存没有释放掉,因为如果再次点击form1上面的菜单,再生成form2的时候,程序占有的内存继续往上增加。因为我的程序是在form1的基础上经常点击菜单,如果这样下去,内存总有被该程序耗光的时候。
可是我确实调用了form2.free了,为什么还没有释放掉内存?
 
我写了一个程序,有一个主窗体form1,form1上有一个主菜单,通过点击上面的菜单项,动态生成窗口form2,就是form2:=Tform2.create(nil)生成,form2上的一些控件也是动态create出来的,通过form2.showmodal显示form2,然后通过form2上一个按钮点击执行一个段程序,然后form2自动关闭,包括内存释放。我在 form2的destroy的事件里面执行有关内存释放的操作:
for i:=0 to form2.ComponentCount-1 do
begin
form2.Components.Free;
end;
然后在form1里面调用form2.free;
可是好像内存没有释放掉,因为如果再次点击form1上面的菜单,再生成form2的时候,程序占有的内存继续往上增加。因为我的程序是在form1的基础上经常点击菜单,如果这样下去,内存总有被该程序耗光的时候。
可是我确实调用了form2.free了,为什么还没有释放掉内存?
 
其实你根本就不需要写释放的程序,在你的form2被关闭的时候,上面所有的控件都会被自动的释放掉的。还不行用一下FreeAndNil;
 
后退
顶部