System.Finalize

De RAD Studio API Documentation
Aller à : navigation, rechercher

Delphi

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

Propriétés

Type Visibilité  Source Unité  Parent
procedure public System.pas System System

Description

Désinitialise une variable allouée dynamiquement.

Finalize ne doit être utilisée que dans le code Delphi lorsqu'une variable allouée dynamiquement est désallouée par un autre moyen que la procédure standard Dispose. Les tableaux dynamiques ne peuvent jamais être désalloués à l'aide de la procédure Dispose, mais vous pouvez les libérer en les transmettant à Finalize.

Pour les variables globales et locales, les objets et les variables dynamiques désallouées en utilisant Dispose, le compilateur génère du code qui finalise tous les variants, interfaces et chaînes longues contenus dans une variable lors de la destruction de la variable.

Si une variable dynamique remplit les deux conditions suivantes, un appel à Finalize est nécessaire afin de finaliser la variable avant de la désallouer.

La variable est désallouée par un autre moyen que la procédure standard Dispose (par exemple, en utilisant FreeMem).

La variable contient des variants, interfaces ou chaînes longues qui ne sont pas à vide ni Unassigned.

Finalize ne fait que vider les chaînes longues et rendre les variants et interfaces Unassigned, et libère proprement la mémoire qui était référencée par les longues chaînes et les variants.

Dans les cas où plusieurs variables sont désallouées dans un bloc de mémoire contiguë tel qu'un tableau de chaînes alloué dynamiquement, le paramètre additionnel Count peut être spécifié afin de finaliser toutes les variables en une seule opération.

Si la variable spécifiée lors d'un appel à Finalize ne contient pas de variants, de chaînes longues ni d'interfaces, le compilateur élimine l'appel et ne génère pas de code pour cet appel.

Voir aussi