Thema: Delphi Array korrekt freigeben

Einzelnen Beitrag anzeigen

Benutzerbild von Uwe Raabe
Uwe Raabe
Online

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.835 Beiträge
 
Delphi 12 Athens
 
#6

AW: Array korrekt freigeben

  Alt Gestern, 15:43
Hier ist das ausführlich erklärt - man muss es aber auch ganz lesen: System.Finalize

Wichtig ist dabei folgende Sequenz:
Zitat:
Wenn auf eine dynamische Variable folgende Bedingungen zutreffen, ist ein Aufruf von Finalize erforderlich, um die Variable vor ihrer Deallozierung zu finalisieren.

Die Variable wird nicht mit der Standardprozedur Dispose (sondern z.B. mit FreeMem) freigegeben.

Die Variable enthält lange Strings, Varianten und Interfaces, die nicht alle leer sind bzw. den Wert Unassigned haben.
Es müssen beide Bedingungen zutreffen, also insbesondere die dynamische Erzeugung/Freigabe und dann auch nur wenn dabei kein New/Dispose verwendet wird.

Im konkreten Fall sind alle deklarierten Array-Variablen, die über SetLength oder ein Copy ihren Speicher bekommen, nicht davon betroffen, da der Compiler weiß was damit zu tun ist und den nötigen Aufräumcode entsprechend anlegt.

Ich kann mich nicht erinnern, wann ich das letzte Mal wirklich ein Finalize schreiben musste.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat