问题:
某一自定义函数返回值的类型为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编程环境中如何正确地创建并释放TStringList对象的问题,通过示例展示了当函数返回TStringList类型的对象时,如何确保内存资源得到妥善管理。

7207

被折叠的 条评论
为什么被折叠?



