Das Memory-Project ist ein Open-Source-Project.
Es ist ein Teil des Memorymanagement was die Basis alle RePag-Programme ist. Es stellt die
Memoryblöcke auf dem Heap zur Verfügung. Mit der Funktion
- InitVirtualMem(bool bAuslagern)
könne einzelne unabhängige Memorybereiche initialisiert werden. Der Parameter bAuslagern gibt
an ob das Betriebssystem den Memorybereich in die Auslagerungsdatei auslagern darf. Somit kann
mit dem Wert FALSE ein Cache im Arbeitsspeicher aufgebaut werden.
In jedem anderen Falle sollte der Parameter auf TRUE gesetzt werden.
Für das Erstellen von Memoryblöcken im Memorybereich stehen verschiedene Funktionen zu
Verfügung die bestimmen wie die Memoryblöcke im Memorybereich zur Verfügung gestellt werden.
-
VMBlock(VMEMORY vmMemory, unsigned long ulBytes) oder VMBlock(unsigned long ulBytes)
stellt ein Memoryblock im angegebenen Memorybereich zu Verfügung und sucht nach dem nächst
möglichem Platz im Memorybereich. Dies führt zu einer geringen Fragmentierung des Memorybereiches.
-
VMBlockS(VMEMORY vmMemory, unsigned long ulBytes) oder VMBlockS(unsigned long ulBytes)
stellt ein Memoryblock im angegebenen Memorybereich zu Verfügung auf die schnellst Weise
am Ende des Memorybereichs. Dies führt bei exzessivem Gebrauch zu einer starken Fragmentierung
des Memorybereiches.
-
VMBlockA(VMEMORY vmMemory, unsigned long ulBytes, unsigned char ulAlign) oder VMBlockA(unsigned long ulBytes, unsigned char ulAlign)
stellt ein Memoryblock im angegebenen Memorybereich zu Verfügung der an einer Memorygrenze
ausgerichtet ist. Dies ist z.B. bei einigen Assembler-Instruction notwendig.
-
VMFrei(VMEMORY vmMemory, void* pvAdresse) oder VMFrei(void* pvAdresse)
git einer Memoryblock im angegebenen Memorybereich wieder frei.
-
VMFreiS(VMEMORY vmMemory, void* pvAdresse) oder VMFreiS(void* pvAdresse)
gibt einen Memoryblock im angegebenen Memorybereich auf die schnellst mögliche Weise wieder frei in dem
es den Memoryblock in einer Liste vermerkt. Diese Liste wird bei geringer CPU-Auslastung abgearbeitet.
Der erste Parameter ist der Memorybereich in dem der Memoryblock zu Verfügung gestellt werden soll. Dies ist
der Rückgabewert der Funktion InitVirtualMem(...). In der Variante ohne der Angabe des Memorybereiches wird
ein Memoryblock aus dem Standard-Memorybereich zu Verfügung gestellt. Dieser Memorybereich 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.