Ich habe es - noch zu Zeiten von Delphi 5 so gelernt - und dies seither auch stets so gehandhabt, daß jedes mit SetLegth(My_Array, Len)
erzeugte dynamische Array am Ende mit My_Array:= NIL;
freigegeben werden muß.
Ich erinnere mich nicht, dass das bei Delphi 5 notwendig gewesen wäre...
Habe gerade in meiner lokalen Hilfe-Datei zu XE5 (Stand ca. 2013) folgenden Hinweis gefunden:
ms-help://embarcadero.rs_xe5/rad/Strukturierte_Typen.html
Zitat:
Dynamische Array-Variablen sind implizit Zeiger und werden mit derselben Referenzzählung verwaltet wie lange Strings. Um ein dynamisches Array freizugeben, weisen Sie einer Variable, die das Array referenziert, den Wert nil zu, oder Sie übergeben die Variable an Finalize. Beide Methoden geben das Array unter der Voraussetzung frei, dass keine weiteren Referenzen darauf vorhanden sind. Dynamische Arrays werden immer freigegeben, sobald ihr Referenzzähler null ist. Dynamische Arrays der Länge 0 haben immer den Wert nil.
Leider wird nirgends aufgeführt, welche Typen "gemanagt" sind und somit automatisch freigegeben werden.
Grüße, Andreas