System.AllocMemCount

Aus RAD Studio API Documentation
Wechseln zu: Navigation, Suche

Delphi

AllocMemCount: Integer deprecated; {Unsupported}

C++

extern DELPHI_PACKAGE int AllocMemCount _DEPRECATED_ATTRIBUTE0 ;

Eigenschaften

Typ Sichtbarkeit Quelle Unit Übergeordnet
variable public
System.pas
System.hpp
System System

Beschreibung

Warnung: AllocMemCount ist veraltet.

Repräsentiert die Gesamtanzahl der zugewiesenen Speicherblöcke in einer Delphi-Anwendung.

Anmerkung:  AllocMemCount ist die Anzahl der aktuell zugewiesenen Speicherblöcke, die vom Benutzer angefordert wurden. AllocMemCount wird bei jeder Zuweisung eines Speicherblocks inkrementiert und bei jeder Freigabe eines Speicherblocks dekrementiert. Mit AllocMemCount können Sie feststellen, wieviele belegte Blöcke im Speicher verblieben sind.


Warnung: AllocMemCount wird in der Unit System als globale Variable deklariert. Der direkte Zugriff ist daher nicht immer sicher. Wenn Module statisch zu der RTL gelinkt werden, hat jedes Modul eine andere Instanz von AllocMemCount. Die folgende Tabelle enthält eine Zusammenfassung dazu. Beachten Sie bitte, dass Anwendungen mit Laufzeit-Packages dynamisch zu der RTL gelinkt werden, während Anwendungen ohne Laufzeit-Packages statisch gelinkt werden.

Anwendungstyp Zugriff auf AllocMemCount

EXE

Anwendungen, die keine Packages oder Delphi-DLLs verwenden, können sicher auf diese globale Variable zugreifen, weil nur eine Instanz vorhanden ist.

EXE mit Packages und ohne Delphi-DLLs

Anwendungen, die Laufzeit-Packages, aber keine statisch gelinkten Bibliotheken verwenden, können direkt und sicher auf AllocMemCount zugreifen. In diesen Situationen sind alle Module dynamisch zu der RTL gelinkt und es ist nur eine Instanz der Varible vorhanden. Im Gegensatz zu Standard-DLLs erlauben Packages den Zugriff auf globale Variablen.

EXE mit statisch gelinkten DLLs

Wenn eine Anwendung statisch zu der RTL gelinkt ist und auch statisch gelinkte Bibliotheken besitzt, dann sollte auf die Variable AllocMemCount niemals direkt zugegriffen werden, da die EXE-Datei und alle Bibliotheken eigene Instanzen davon verwenden. Verwenden Sie stattdessen die in BorlandMM implementierte Funktion GetAllocMemCount, die die Instanz der globalen Variablen AllocMemCount in der BorlandMM-DLL zurückgibt. Diese DLL verwaltet die Speicherzuweisung für alle Module, die die Unit ShareMem als erste Unit in der uses-Klausel der Anwendung oder der Bibliothek einbeziehen. Daher enthält diese Instanz der Variable den korrrekten Wert. In dieser Situation wird mit einer Funktion auf AllocMemCount zugegriffen, weil globale Variablen in einer DLL private Elemente dieser DLL sind.

EXE mit Packages und statisch gelinkten DLLs

Es ist nicht ratsam, Anwendungen zu erstellen, die Laufzeit-Packages und statisch gelinkte Bibliotheken verwenden. In solchen Fällen müssen Sie bei Speicheroperationen (Zuweisung, Freigabe, Zugriff) sehr vorsichtig sein. Denken Sie daran, dass jede RTL-Version eine Instanz von AllocMemCount enthält, die Speicher referenziert, der nur von diesem speziellen Modul zugewiesen und freigegeben wird.


Siehe auch