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;   
 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值