System.Finalize

Aus RAD Studio API Documentation
Wechseln zu: Navigation, Suche

Delphi

procedure Finalize(var V); overload;
procedure Finalize(var V; Count: NativeUInt); overload;

Eigenschaften

Typ Sichtbarkeit Quelle Unit Übergeordnet
procedure public System.pas System System

Beschreibung

Deinitialisiert eine dynamisch zugewiesene Variable.

Finalize sollte nur in Delphi-Quelltext verwendet werden, in dem eine dynamisch erstellte Variable nicht mit der Prozedur Dispose freigegeben wird. Der von dynamische Arrays belegte Speicher kann mit der Prozedur Dispose nicht freigegeben werden. Dynamische Arrays müssen dazu an Finalize übergeben werden.

Beim Freigeben von globalen Variablen, lokalen Variablen, Objekten und dynamischen Variablen mit Dispose generiert der Compiler Programmcode, um alle in der Variablen enthaltenen langen Strings, Varianten und Interfaces zusammen mit der Instanz zu finalisieren.

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.

Finalize setzt einfach alle langen Strings auf einen leeren Wert und alle Varianten und Interfaces auf Unassigned und sorgt somit für die ordnungsgemäße Freigabe des betreffenden Speichers.

Werden mehrere Variablen in einem zusammenhängenden Speicherblock freigegeben (z.B. ein dynamisches String-Array), kann der optionale Parameter Count angegeben werden, um alle Variablen in einer Operation zu finalisieren.

Enthält die als Parameter an Finalize übergebene Variable keine langen Strings, Varianten oder Interfaces entfernt der Compiler den Aufruf und generiert keinen Code.

Siehe auch

Codebeispiele