在函数内部声明一变量,返回值也是这个变量值,这个变量是个TStrings类型,这个类型的变量值用不用考虑释放free啊

解决方案 »

  1.   

    需要释放free;
    一般函数执行完后,会有一个对象接收它,通过它可以释放。不过最好采用过程的方法,能过参数将对象传进去。
      

  2.   

    动态创建的对象实例都是在堆中分配内存的!这些内存空间的管理都要由程序员自己负责.所以必须你来释放。
    如上面“无天”所讲一般地函数返回的指针就可以代表了这个对象实例,你可以利用这个来进行内存管理。一般的通过过程操作是类似这样的;
    procedure someMethod(amember:Tstrings);var
      listmember:Tstringlist;  listmember:=tstringlist.create;//在外部创建对象
      someMethod(listmember);//通过引用来操作对象。
      
      listmember.free; //释放对象。
      

  3.   

    你自己创建的对象一定要自己释放。
    一般的原则上是谁拥有,谁释放。对于你这情况,如果函数内部仅是创建,就象一个类工场,则由接收这个对象的所有者来释放。或者你可以写为procedure GetStrings(var list:TStringList);
    beginend;由调用者先创建,在执行GetString。