代码如下:
procedure TForm1.Button1.Click(Sender: TObject);   
var
  AttrsForm:TAttrs;        //TAttrs就是第2个我添加的窗体,也就是默认时的Form2;
begin
  AttrsForm:=TAttrs.Create(Nil);  
  AttrsForm.Show;
end;这样我每点一下这个按钮,都会显示出和TAttrs一样的窗口,
问题是:
  当我把整个程序关了的时候,由创建窗口所用的内存能不能得到回收?

解决方案 »

  1.   

    我现在是在一个按钮的单击事件中创建一个新的窗口,
    我想在我关闭这个新窗口的时候,就想释放它,收回我创建这个窗口时的内存,
    如果不这样做的话.每点一下这个按钮,就会占一些内存,多了就不得了了.
    如果在这个新窗口的onClose事件中用 self.Free;
    这样的话会出错,
    当我连续创建三个窗口时,先关掉第一个,再关掉第二个,然后关第三个的时候就出错了,
    我也不知道错在哪里.
    我应该怎样去做呢?
    这个Free我是不是用错地方了?
      

  2.   

    你现在这个写法不会释放,如果指定了Owner,则会在Owner释放的时候释放你这个窗体。好的做法2楼说了,最好自己控制窗体的声明周期,例如说如果窗体是showmodal的话,就在showmodal后释放掉这样(当然你也可以保留着窗体的引用,下次不用创建,直接显示,看需要)-----------------------如果在这个新窗口的onClose事件中用 self.Free; 正确的写法是在onClose里面写:Action := caFree