Das Memory-Project ist ein Open-Source-Projekt.
Es ist ein Teil des Memory-Managements, das die Basis aller RePag-Programme bildet.
Es stellt die Memoryblöcke auf dem Heap zur Verfügung. Mit der Funktion:
- InitVirtualMem(bool bAuslagern)
können einzelne unabhängige Memorybereiche initialisiert werden. Der Parameter bAuslagern gibt
an, ob das Betriebssystem den Memorybereich in die Auslagerungsdatei verschieben darf. Somit kann
mit dem Wert FALSE ein Cache im Arbeitsspeicher aufgebaut werden.
In jedem anderen Fall sollte der Parameter auf TRUE gesetzt werden.
Für das Erstellen von Memoryblöcken im Memorybereich stehen verschiedene Funktionen zur
Verfügung, die bestimmen, wie die Memoryblöcke im Memorybereich bereitgestellt werden:
-
VMBlock(VMEMORY vmMemory, unsigned long ulBytes) oder VMBlock(unsigned long ulBytes)
stellt einen Memoryblock im angegebenen Memorybereich zur Verfügung und sucht nach dem
nächstmöglichen Platz im Memorybereich. Dies führt zu einer geringen Fragmentierung des Memorybereichs.
.
-
VMBlockS(VMEMORY vmMemory, unsigned long ulBytes) oder VMBlockS(unsigned long ulBytes)
stellt einen Memoryblock im angegebenen Memorybereich auf die schnellste Weise am Ende des Memorybereichs
zur Verfügung. Dies führt bei exzessivem Gebrauch zu einer starken Fragmentierung des Memorybereichs.
-
VMBlockA(VMEMORY vmMemory, unsigned long ulBytes, unsigned char ulAlign) oder VMBlockA(unsigned long ulBytes, unsigned char ulAlign)
stellt einen Memoryblock im angegebenen Memorybereich zur Verfügung, der an einer Memorygrenze
ausgerichtet ist. Dies ist z. B. bei einigen Assembler-Instruktionen notwendig.
-
VMFrei(VMEMORY vmMemory, void* pvAdresse) oder VMFrei(void* pvAdresse)
gibt einen Memoryblock im angegebenen Memorybereich wieder frei.
-
VMFreiS(VMEMORY vmMemory, void* pvAdresse) oder VMFreiS(void* pvAdresse)
gibt einen Memoryblock im angegebenen Memorybereich auf die schnellstmögliche Weise wieder frei,
indem er den Block in einer Liste vermerkt. Diese Liste wird bei geringer CPU-Auslastung abgearbeitet.
Der erste Parameter ist der Memorybereich, in dem der Memoryblock zur Verfügung gestellt werden soll.
Dies ist der Rückgabewert der Funktion InitVirtualMem(...). In der Variante ohne Angabe des Memorybereichs
wird ein Memoryblock aus dem Standard-Memorybereich zur Verfügung gestellt.
Dieser Standardbereich wird beim Start der Library initialisiert.
Mit der Funktion
- FreeVirtualMem(VMEMORY vmMemory)
wird der Memorybereich komplett freigegeben. Spätestens beim Beenden des Programms sollte diese Funktion ausgeführt werden.