Delphi函数返回值内存释放的问题

问题:

某一自定义函数返回值的类型为TStringList;如下:  
  function   FuncName(const   VariantName:integer):TStringList;  
  var  
      RValue:TStringList;  
  begin  
      RValue:=Tstringlist.create;  
      ...  
      Result:=RValue;  
   
      //现在不使用这个RValue了,该如何释放掉这个?free肯定错误的!  
      //或者是否有一种好的解决 办法 ?  
  end;   
   

回答:

 delphi中所有class的实例俱为指针

如果你没有用他的返回值,指向的内容delphi会释放  
  如果你赋植给另一个变量,占用的内存是你的调用变量  
  如:  
   
  function   FuncName:TStringList;  
  begin  
      result:=Tstringlist.create;   //只是一个指针  
      result.add('love   someone');   //加了  
  end;  
   
  procedure   one;  
  var   needstrings:TStringList;  
  begin  
  {   needstrings:=TStringList.create;   //另一个指针   ,多余}  
    needstrings:=TStringList;  
    showmessage(needstrings[0]);  
    needstrings.free;       //释放了  
  end;   
 

你可能感兴趣的:(Delphi函数返回值内存释放的问题)