Einzelnen Beitrag anzeigen

Andreas13

Registriert seit: 14. Okt 2006
Ort: Nürnberg
711 Beiträge
 
Delphi XE5 Professional
 
#12

AW: Warum wird eine dynamisch erzeugte Matrix scheinbar automatisch freigegeben?

  Alt 30. Mai 2022, 14:33
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
Grüße, Andreas
Wenn man seinem Nächsten einen steilen Berg hinaufhilft, kommt man selbst dem Gipfel näher. (John C. Cornelius)

Geändert von Andreas13 (30. Mai 2022 um 14:35 Uhr)
  Mit Zitat antworten Zitat