S
smallmoneybags
Unregistered / Unconfirmed
GUEST, unregistred user!
这个鸟delphi,气死我了。内存释放的问题
问题是这样的。我有两个窗体,
form1, 主窗体,form2在projects设为手工创建 。
在Form1,上放了一个button1, 在implea..下引用form2.
var
Form1: TForm1;
implementation
uses Unit2;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
if not Assigned(Form2) then
Form2:=TForm2.Create(Self);
Form2.Show;
//第二次Show的时候Create就不会执行,但是实际上Form2已经不存在了,所以Form2.Show
end;
//下面是form2的代码
{$R *.dfm}
procedure TForm2.Button1Click(Sender: TObject);
begin
Close;
end;
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
action:=cafree;
FORM2:=NIL;
end;
end.
另外我在form2上放了一张600*800的bmp格式图象,
当form1第一次调用 form2的时候,占用了500K的内存,
在关闭form2窗体后,这个图象资源根本就没有释放。只是放了十几k (如果没有图象也是一样,就是一个空窗体), 第二次调用的时候好象资源没占多少。
但是当主窗体关闭后,内存又复位了。
form2关闭后怎样把form2彻底.
不信的大家可以自己做个实验,就两个窗体。
问题是这样的。我有两个窗体,
form1, 主窗体,form2在projects设为手工创建 。
在Form1,上放了一个button1, 在implea..下引用form2.
var
Form1: TForm1;
implementation
uses Unit2;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
if not Assigned(Form2) then
Form2:=TForm2.Create(Self);
Form2.Show;
//第二次Show的时候Create就不会执行,但是实际上Form2已经不存在了,所以Form2.Show
end;
//下面是form2的代码
{$R *.dfm}
procedure TForm2.Button1Click(Sender: TObject);
begin
Close;
end;
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
action:=cafree;
FORM2:=NIL;
end;
end.
另外我在form2上放了一张600*800的bmp格式图象,
当form1第一次调用 form2的时候,占用了500K的内存,
在关闭form2窗体后,这个图象资源根本就没有释放。只是放了十几k (如果没有图象也是一样,就是一个空窗体), 第二次调用的时候好象资源没占多少。
但是当主窗体关闭后,内存又复位了。
form2关闭后怎样把form2彻底.
不信的大家可以自己做个实验,就两个窗体。