函數是在棧中分配內存,一出棧就回收了,但是在函數中創建對像,這個對像是在什麼地方分內存?請指教!

解决方案 »

  1.   

    object is created in heap, so you should destroy it youself
      

  2.   

    什么地方分配内存不清楚,但是基本遵循下面的规则:
    如果Create需要传递Owner参数进去,则如果传递NIl则需要自己释放,否则程序不会释放直到程序关闭。如果传递了Self或者Application,则在Self所指的对象或Application释放的时候释放你创建的对象。
    像楼上说的,最好自己创建自己释放。
      

  3.   

    对象都在建立在Heap上的,我们通常用的对象变量都是该对象的一个栈指针.所以建了就要释放,除非你指明属主Aowner,由Aowner来释放
      

  4.   

    看看aimingo大师的<<delphi源码分析吧>>
    function aa;
    var
    aaa:integer;//栈
    sss:string;//栈
    bbb:Tbutton;//栈(仅是一个4 bytes的指针)
    begin
    bbb:=Tbutton.create(nil);// 堆上
    end;
      

  5.   

    只要是自己CREATE的,最好自己都释放
      

  6.   

    你在CREATE时.会调用构造(就是通过它来分配内存)  //constructor Create()
    对象创建后需要释放 .通过析构函数              //destructor Destroy;
      

  7.   

    如果你使用.NET库,那就什么都不用管了,只要创建、使用就行了,内存回收就留给.NET处理好了 :D