System.AllocMemCount

De RAD Studio API Documentation
Aller à : navigation, rechercher

Delphi

AllocMemCount: Integer deprecated; {Unsupported}

C++

extern DELPHI_PACKAGE int AllocMemCount _DEPRECATED_ATTRIBUTE0 ;

Propriétés

Type Visibilité  Source Unité  Parent
variable public
System.pas
System.hpp
System System

Description

Avertissement : AllocMemCount est obsolète.

Représente le nombre total des blocs de mémoire alloués dans une application Delphi.

Remarque :  AllocMemCount représente le nombre de blocs mémoire actuellement alloués qui ont été demandés par l'utilisateur. AllocMemCount est incrémentée chaque fois qu'un bloc de mémoire est alloué et décrémentée chaque fois qu'un bloc de mémoire est libéré. Utilisez AllocMemCount pour savoir combien il reste de blocs de mémoire non libérés.

Avertissement :  Comme AllocMemCount est une variable globale déclarée dans l'unité System, il n'est pas toujours possible d'y accéder en toute sécurité. Dans les cas où des modules sont liés de façon statique à la RTL, chaque module aura sa propre instance de AllocMemCount. Le tableau suivant résume les différents cas. Remarquez que les applications qui utilisent des packages d'exécution sont liées à la RTL de façon dynamique, alors que les autres sont liées de façon statique.


Type d'application Accessibilité à AllocMemCount

EXE

Les applications qui n'utilisent pas de packages ni des DLL Delphi peuvent accéder en toute sécurité à cette variable globale car il n'en existe qu'une seule instance.

EXE avec des packages et sans DLL Delphi

Les applications qui utilisent des packages d'exécution et n'utilisent aucune DLL liée de façon statique peuvent accéder directement à AllocMemCount en toute sécurité. Dans cette situation, tous les modules sont liés de façon dynamique à la RTL et il n'existe qu'une seule instance de la variable. Contrairement aux DLL standard, les packages autorisent l'accès aux variables globales.

EXE avec des DLL liées de façon statique

Si une application est liée à la RTL de façon statique et si elle utilise également des DLL qui sont liées de façon statique à la RTL, alors la variable AllocMemCount ne doit pas être accédée directement, car l'EXE et chaque bibliothèque en possèdent leur propre instance. Utilisez à la place la fonction GetAllocMemCount, implémentée dans BorlandMM, qui renvoie l'instance de la variable globale AllocMemCount dans la DLL BorlandMM. Cette DLL gère l'allocation mémoire de tous les modules qui incluent l'unité ShareMem comme première unité de l'application ou la clause uses de la bibliothèque. C'est donc cette instance de la variable qui contient la valeur correcte. Une fonction est utilisée pour accéder à AllocMemCount dans ce cas, car les variables globales d'une DLL sont privées pour cette DLL.

EXE avec des packages et des DLL liées de façon statique

Il n'est pas conseillé de créer des applications qui mélangent des packages d'exécution et des bibliothèques liées de façon statique. Si vous le faites, soyez prudent lorsque vous allouez et libérez de la mémoire ou lorsque vous accédez à la mémoire. N'oubliez pas que chaque version de la RTL contient une instance de AllocMemCount qui fait référence uniquement à la mémoire allouée et libérée par ce module particulier.


Voir aussi