System.AllocMemSize

Aus RAD Studio API Documentation
Wechseln zu: Navigation, Suche

Delphi

AllocMemSize: Integer deprecated; {Unsupported}

C++

extern DELPHI_PACKAGE int AllocMemSize _DEPRECATED_ATTRIBUTE0 ;

Eigenschaften

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

Beschreibung

Warnung: AllocMemSize ist veraltet.

Repräsentiert die Gesamtgröße der zugewiesenen Speicherblöcke.

Anmerkung:  AllocMemSize ist die Gesamtgröße in Byte der aktuell zugewiesenen Speicherblöcke, die von der Anwendung verwendet werden. Mit AllocMemSize können Sie feststellen, wieviel Byte des Speichers eine Anwendung aktuell verwendet.


Warnung: AllocMemSize 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 AllocMemSize. 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 AllocMemSize

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 AllocMemSize 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 DLLs besitzt, dann sollte auf die Variable AllocMemSize niemals direkt zugegriffen werden, da die EXE und alle DLLs eigene Instanzen davon verwenden. Verwenden Sie stattdessen die in BorlandMM implementierte Funktion GetAllocMemSize, die die Instanz der globalen Variablen AllocMemSize 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 AllocMemSize 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 DLLs 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 AllocMemSize enthält, die Speicher referenziert, der nur von diesem speziellen Modul zugewiesen und freigegeben wird.


Siehe auch