function GetASubStrings(Item1: string; Item2: string): TStrings;
var
  st: TStrings;
  it: string;
begin
  st:= TStringList.Create;
  st.Clear;
{处理过程....}
  result:= st;
end;主函数中
  Memo1.Lines.AddStrings(GetASubStrings(a,b));  
  Memo1.Lines.AddStrings(GetASubStrings(c,d));  
  Memo1.Lines.AddStrings(GetASubStrings(e,f));
......类似这样的情况,我没有地方可以Free st,会不会造成内存被无效占用?如果我想Free,Free语句放在哪里比较合适呢?谢谢

解决方案 »

  1.   

    会占用内存,这种情况,最好不用函数实现,而用过程实现,能过参数传出结果。
    如果非要用函数,你可用未初始化的TStrings类型的变量来接收GetASubStrings返回值,用完了,通过那个变量来翻译内存
      

  2.   

    会占用内存,这种情况,最好不用函数实现,而用过程实现,通过参数传出结果。
    如果非要用函数,你可用未初始化的TStrings类型的变量来接收GetASubStrings返回值,用完了,通过那个变量来释放内存