我不關閉ADOQuery,也就是不調用close方法,但是窗體關閉中寫入action:=cafree,會不會出現內存洩漏?請指教!謝謝

解决方案 »

  1.   

    這個問題不錯! 你只要釋放ADOQuery它自動會給你關閉.下面為這個對象的Destroy方法destructor TCustomADODataSet.Destroy;
    begin
      Destroying;
      Close;
      SetConnection(nil);
      FreeAndNil(FCommand);
      FreeAndNil(FModifiedFields);
      FreeAndNil(FIndexDefs);
      FreeAndNil(FIndexFields);
      FreeAndNil(FMasterDataLink);
      FreeAndNil(FParams);
      inherited Destroy;
    end;
      

  2.   

    謝謝,那就是說,我不用關閉這些ado控件,只要在窗體中寫入action:=cafree 就不會有太大的問題是吧!
      

  3.   

    是的,只要是你在窗口设计中放置的控件,当释放窗口时,DELPHI就都会自动释放窗口所有的控件。
      

  4.   

    如果你是动态创建的,就要看你创建的父类了,如果是创建在application或者self上面,可以不用释放,不过一般不推荐这样,还是自己释放比较好。但是如果你是静态的,就不需要释放了
      

  5.   

    >>>謝謝,那就是說,我不用關閉這些ado控件,只要在窗體中寫入action:=cafree 就不會有太大的問題是吧!
    是的是的是的
      

  6.   

    看谁是Owner,谁就负责内存,比如Self,Application,如果是Nil,就要自已管理