问题:
某一自定义函数返回值的类型为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;