Jupp
Das
AResultStr := nil; vor
AResultStr := PChar(List); kannst'e erstmal weglassen ist "unnötiger" Code.
So könnte man dafür sorgen, das
List nicht freigegeben wird.
Wie oben schon gesagt wurde, werden lockale Variablen am Ende der Prozedur freigeben (das Gilt zwar nicht für Objekte/Pointer..., wo nur de Zeiger "gelöscht" wird, aber bei Strings und dynamischen Arrays wird auch der Inhalt mit freigegeben.
Delphi-Quellcode:
AResultStr := PChar(List);
Pointer(AResultStr) := nil; // ändert nur den Pointer auf den String und läßt den Inhalt reserviert
Aber dann musß du dann später den String an der Stelle natürlich auch selber freigeben
[add]
DelphiMM
der DelphiMM shared den Speicher nicht und da dann in jedem Modul ein eigener MM aktiv ist, kann man die Strings "nicht" in ein anders Modul übergeben,
jedenfalls wenn dort dann der Sringinhalt geändert wird, wozu in vielen Fällen auch nur das ändern des Referenzzählers zählt...