Reserviert eine festgelegte Anzahl von Bytes aus dem Heap
#include <Memory.au3>
_MemGlobalAlloc ( $iBytes [, $iFlags = 0] )
| $iBytes | Anzahl der zu reservierenden Bytes. Wenn dieser Parameter 0 ist und $iFlags als $GMEM_MOVEABLE festgelegt ist, gibt die Funktion ein Handle zu einem Speicher-Objekt zurück, welches als "verworfen" gekennzeichnet ist. |
| $iFlags | [optional] Die Speicherzuweisungsattribute: $GMEM_FIXED - Stellt statischen Speicher bereit. Der Rückgabewert ist ein Zeiger. $GMEM_MOVEABLE - Stellt dynamischen Speicher bereit. Speicherblöcke werden nie im physikalischen Speicher verschoben, sehr wohl aber innerhalb des Standard-Heaps. Der Rückgabewert ist ein Handle zum Speicherobjekt. Um das Handle in einen Zeiger zu konvertieren, muss man die _MemGlobalLock() Funktion nutzen. Dieser Wert kann nicht mit $GMEM_FIXED kombiniert werden. $GMEM_ZEROINIT - Initialisiert Speicherinhalte auf Null $GHND - Kombiniert $GMEM_MOVEABLE mit $GMEM_ZEROINIT $GPTR - Kombiniert $GMEM_FIXED mit $GMEM_ZEROINIT |
| Erfolg: | Handle zum neu zugewiesenen Speicher-Objekt |
| Fehler: | 0. |
Das Windows Memory Management bietet keinen separaten lokalen und globalen Heap.
Wenn diese Funktion erfolgreich ist, stellt sie zumindest die Menge des angeforderten Speichers bereit.
Wenn der tatsächliche Betrag höher ist als der angeforderte, kann der Prozess den kompletten Betrag verwenden.
Zur Bestimmung der tatsächlichen Anzahl von zugeteilten Bytes, muss die _MemGlobalSize() Funktion genutzt werden.
Wenn der Heap nicht ausreichend freien Speicher enthält, um die Anfrage zu erfüllen, gibt diese Funktion NULL zurück.
Speicher welcher mit dieser Funktion bereitgestellt wurde, ist an einer 8-Byte Grenze ausgerichtet.
Für das Ausführen von dynamisch generiertem Code, nutzen sie die _MemVirtualAlloc() Funktion um Speicher bereitzustellen, und die _Mem_VirtualProtect Funktion um $PAGE_EXECUTE Zugriff zu gewähren.
Um den Speicher freizugeben, müssen sie die _MemGlobalFree() Funktion nutzen.
_MemGlobalFree, _MemGlobalLock, _MemGlobalSize, _MemVirtualAlloc
Suche nach GlobalAlloc in der MSDN Bibliothek.