System.AllocMemSize
Delphi
AllocMemSize: Integer deprecated; {Unsupported}
C++
extern DELPHI_PACKAGE int AllocMemSize _DEPRECATED_ATTRIBUTE0 ;
Propriétés
Type | Visibilité | Source | Unité | Parent |
---|---|---|---|---|
variable | public | System.pas System.hpp |
System | System |
Description
Avertissement : AllocMemSize est obsolète.
Représente la taille totale des blocs de mémoire alloués.
Remarque : AllocMemSize représente la taille totale, en octets, de tous les blocs de mémoire actuellement alloués en cours d'utilisation par une application. Utilisez AllocMemSize pour savoir combien d'octets de mémoire utilise actuellement une application.
Avertissement : Comme AllocMemSize 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 AllocMemSize. 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é à AllocMemSize |
---|---|
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 à AllocMemSize 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 AllocMemSize ne doit pas être accédée directement, car l'EXE et chaque DLL en possèdent leur propre instance. Utilisez à la place la fonction GetAllocMemSize, implémentée dans BorlandMM, qui renvoie l'instance de la variable globale AllocMemSize 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 à AllocMemSize dans ce cas, car les variables globales d'une DLL sont privées pour cette DLL. |
EXE avec des paquets 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 DLL 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 AllocMemSize qui fait référence uniquement à la mémoire allouée et libérée par ce module particulier. |