delphi写的程序关闭主窗体后内存释放不了,请问怎么解决呀?

解决方案 »

  1.   

    组件或者对象没释放完吧,检查一下一个一个释放吧
    譬如动态创建的控件OWNER 是 nil的什么的,没关闭的DATASET、链接什么的。
      

  2.   

    你都创建了什么对象?
    逐一检查,如果不确定的话,在建立对象的时候就要使用create(self);
      

  3.   

    我用了mscomm控件,我在主窗体的onclose事件中把有mscomm控件的窗体free了好像就没有这个问题了,用mscomm控件有什么得注意的地方吗?
      

  4.   

    对应该是内存泄露了
    不过我还是觉得SPCom用起来方便 
      

  5.   


      使用一个对象首先要创建 AObject =TAClass.Create();//可能有参数
      使用完后就要释放该对象所使用的资源AObject.Free(),这样是最安全的否则就造成了所谓的内存泄露了;
      如果使用的是接口则使用AInterface :=nil;
      最好不要直接使用AObject.Destroy;
      
      procedure TObject.Free;
      begin
        if Self <> nil then
          Destroy;
      end;  destructor TObject.Destroy;
      begin
      end;
      

  6.   

    在主窗体的OnClose事件中添加:Action:=caFree;
    在OnDestroy事件中添加:Form1:=nil;试试看
      

  7.   

    如果希望用户关闭窗体就在内存中释放它,必须处理它的onclose事件
    并且把action的参数设置为cafree
    例如:
    procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
       action:=cafree;
    end;
    这样做才算彻底的关闭了这个窗体,否则只用整个程序退出的时候,内存才会释放它所占用的资源
      

  8.   

    关闭用application.close
    一般都能官的
      

  9.   

    可以用fastmm监测一下
    专门检测内存泄露的