function TDemo.GetList:TStringlist;
begin
Result:=TStringlist.Create;
{...}
end;
procedure TMain.Something;
Var
S:String;
begin
For S IN Demo.GetList do begin
end;
end;
function TDemo.GetList: TStringList;
begin
Result := TStringlist.Create;
...
end;
procedure TMain.Something;
var
S: String;
SL: TStringList;
begin
SL := Demo.GetList;
try
for S in SL do begin
...
end;
finally
SL.Free;
end;
end;
function TDemo.GetList: TArray<String>;
begin
SetLength(Result, ...);
...
end;
procedure TMain.Something;
var
S: String;
begin
for S in Demo.GetList do begin
...
end;
end;
1条答案
按热度按时间x6yk4ghg1#
是的,
TStringList
会泄漏。当您使用完TStringList
时,必须显式地使用Free
,例如:这就是为什么返回一个
Create
的对象作为函数返回值通常不是一个好主意。在这个特殊的例子中,返回一个数组将是一个替代的解决方案,不需要手动清理,例如: