//我动态创建两个窗体
Form1 := TForm1.Create(Application);
Form2 := TForm1.Create(Application);//然后释放Form1
Form1.Free;//这时Form2也变为nil了
if Form2 <> nil then
ShowMessage('not nil');//请问这到底为什么啊?如果我要像这样创建一个窗体的两个实例应该怎么办?因为Form2创建后Form1的指针就变成野指针了

解决方案 »

  1.   

    现在问题是Form2创建后Form1的的内存就没办法释放了,因为虽然Form1.Free,但这里其实是释放了Form2的内存
      

  2.   

    不会啊!我是这样写的,lz看看!unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;type
      TForm1 = class(TForm)
        Button1: TButton;
        Button2: TButton;
        procedure Button1Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;
      form2 :TForm1;
      form3 : TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
    begin
      form2:=TForm1.Create(self);
      form3 := TForm1.Create(self);
      form2.Show;
      form3.Show;
    end;procedure TForm1.Button2Click(Sender: TObject);
    begin
      form2.Free;
    end;end.