Genau aus solchen Gründen sollte man es immer vermeiden Objekte innerhalb einer Funktion zu erzeugen. Besser außerhalb erzeugen, Funktion aufrufen und außerhalb wieder freigeben. Dann gibt es keine Fragen der Zuständigkeit:
Delphi-Quellcode:
List := TStringList.Create;
try
GetDirFilesEx(.., List);
..
finally
List.Free;
end;