从函数中返回TstringList对象(摘)

from:http://delphi.about.com/od/delphitips2008/qt/return_strings.htm

如果一个函数返回的对象不是我们经常使用的integer,string..而是Tstringlist、Tbutton等object那怎么办呢?

为什么会有这个问题,因为函数的result是一个object,按照object pascal要求,是需要其owner释放(free)。

举例:

function GetStringList: TStringList;
begin
  result :
= TStringList.Create;
  result.Add(
'an item') ;
end;

以上面的函数中,是没有释放result的。那会不会造成“leak Memory”呢?

文中的作者提醒,只要调用后,进行释放就可以了。

var
  sl : TStringList;
begin
  sl :
= GetStringList;//sl指向GetStringList的内存,因此后面释放sl,相当释放了GetstringList函数内部申请的内存。
  try
    ShowMessage(sl[
0]) ;
    
// or something like
    
// ListBox1.Items.Assign(sl) ;
  finally
    sl.Free;
  
end;
end;
结果就是:要使用一个变量进行“参照”,通过变量进行释放
原文地址:https://www.cnblogs.com/samsonleung/p/1261607.html