Generell sollte man allerdings Speicher auf der Ebene freigeben, auf der er angefordert wurde, sonst steigt die Gefahr eines Memory-Leaks. D.h. statt ein Speicher für ein dynamisches Objekt innerhalb einer Funktion anzufordern und dieses dann als Rückgabewert zu definieren, könnte man es auch als Parameter übergeben. Also z.B. so (mit einem TStrings-Objekt statt eines Arrays):
Delphi-Quellcode:
procedure DoIt(const List: TStrings; length : integer);
var I : integer;
begin
List.Clear;
for I := 0 to length - 1 do
List.Add('Eintrag'+ IntToStr(I));
end;
var S : TStringlist;
begin
S := TStringlist.Create;
try
DoIt(S,5);
finally
S.Free;
end;
end;