Weiter: Andere Arten maschinennaher
Hinauf: 14 Low-Level Features
Zurück: 14.3 Unkontrollierte Deallokation
In Ada ist es möglich, die Default-Einstellung für die Speicher-Allokation
und -Deallokation auf dem Heap durch eigene Algorithmen zu ersetzen.
Für jeden Access-Typ gibt es einen eigenen Storage Pool,
der für jenen Speicherbereich steht, wo Objekte dieses Typs angelegt werden.
Ein Storage Pool kann aber auch dazu genutzt werden, daß mehrere Access-Typen
auf ihm angelegt werden. So sind zum Beispiel alle von einen Vatertyp
abgeleiteten Typen ein und demselben Storage Pool zugeordnet.
Das Paket System.Storage_Pools bietet die Möglichkeit, von dem
abstrakten Typ Root_Storage_Pool eigene Storage Pools abzuleiten.
Ein Beispiel ist:
with System.Storage_Pools;
Es ist zu beachten, daß die Prozeduren Allocate und Deallocate
implizit aufgerufen werden,
wenn ein entsprechendes Objekt angelegt werden (new ...)
oder zerstört werden soll (Unchecked_Deallocation).
Um nun dieses Paket zu verwenden, müssen wir zunächst so einen Pool
anlegen und ihn dem entsprechenden Access-Typ zuordnen.
Das geschieht etwa so:
use Mark_Release_Storage;
Big_Pool: Mark_Release_Pool(50_000);
type Some_Type is ...;
type Some_Access is access Some_Type;
for Some_Access'STORAGE_POOL use Big_Pool;
Johann Blieberger
Wed Feb 11 09:58:52 MET 1998