我的程序中有好多非模态窗口,程序运行一会儿以后,会出现“stack overflow"
的错误,我是这样调用这些窗口的:
  if application.findcomponent('frmviewbook')<>nil then
     frmviewbook.show
  else begin
     application.createform(TfrmViewbook,frmviewbook);
     frmviewbook.show;
  end;
查看了一下内存,发现可用内存在一点一点丧失,会不会是内存泄漏呢?可在DESTROY中用 frmViewBook.free也没用呀.怎么办?

解决方案 »

  1.   

    if not assigned(frmviewbook) then
         frmviewbook.show
      else begin
         frmviewbook:=TfrmViewbook.create(self);
         frmviewbook.show;
      end;
      

  2.   


      if Assigned(frmviewbook) then
         frmviewbook.show
      else begin
         application.createform(TfrmViewbook,frmviewbook);
         frmviewbook.show;
    //在窗口的事件
    procedure TfrmViewbook.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
    Action:=caFree;
    end;procedure TfrmViewbook.FormDestroy(Sender: TObject);
    begin
    frmViewbook:=nil;
    end;