MemAllocate
MemAllocate(int1) : handle
Memory-Objekt erzeugen
Details
- int1: Speichermenge in Byte oder
_MemAutoSize - Resultat:
handleDeskriptor auf das Objekt - Siehe: Verwandte Befehle , Memory ,
MemFree ()
Mit dieser Funktion wird ein Memory -Objekt angelegt. Die Größe muss dabei im Bereich von 1 Byte bis 512 MB (bei 32-Bit-Prozessen) bzw. 2 GB (bei 64-Bit-Prozessen) liegen. Der Speicherbereich wird im Adressraum des aktuellen Prozesses angelegt. Der Adressraum ist bei 32-Bit-Prozessen normalerweise 2 GB groß, in speziellen Fällen auch mehr (siehe ProcessMemoryLimitMB). Als Rückgabewert wird ein Deskriptor auf das Objekt zurückgegeben. Konnte das Objekt nicht angelegt werden, weil nicht ausreichend Speicher vorhanden ist, wird _ErrOutOfMemory zurückgegeben.
Bei der Größe des Objekts können anstelle der Anzahl der Bytes auch folgende Konstanten angegeben werden:
_Mem1K:_Mem1M_Mem2K:_Mem2M_Mem4K:_Mem4M_Mem8K:_Mem8M_Mem16K:_Mem16M_Mem32K:_Mem32M_Mem64K:_Mem64M_Mem128K:_Mem128M_Mem256K:_Mem256M_Mem512K:_Mem512M
Anstelle der Größe des Objekts kann die Konstante _MemAutoSize angegeben werden. Die Größe des Objekts wird dann automatisch vergrößert, wenn entsprechedende Daten in das Objekt geschrieben werden. Beim Vergrößern des Objekts muss der Speicherinhalt kopiert werden, daher dauert das Schreiben dann länger als bei Objekten mit statischer Größe. Eine Verkleinerung des Objekts findet nicht automatisch statt.
Mit dem Befehl MemResize (), kann die Größe nachträglich verändert werden.
Um das Objekt wieder zu entfernen und den Speicher freizugeben, muss die Anweisung MemFree () verwendet werden.
Folgende Fehlerwerte sind möglich:
_ErrValueInvalid: Als Größe (int1) wurde ein Wert <=0angegeben._ErrLimitExceeded: Bei einem 32-Bit-Prozess wurde eine Größe (int1) von mehr als 512 MB angegeben._ErrOutOfMemory: Der Speicher konnte nicht angefordert werden.