ReAllocateMemory()
Syntax
*MemoryID = ReAllocateMemory(*MemoryID, Groesse)Beschreibung
Reserviert (wenn als Parameter '*MemoryID' eine 0 angegeben wird) einen neuen oder vergrößert/verkleinert (auch "re-allocate", mit einer gültigen '*MemoryID' als Parameter) einen vorhandenen zusammenhängenden Speicherbereich '*MemoryID' entsprechend der angegebenen 'Größe' (in Bytes). Wenn der benötigte Speicher verfügbar ist, beinhaltet der Rückgabewert 'MemoryID' die Startadresse des Speicherbereichs, andernfalls ist der Wert gleich 0 (ein bereits existierender Speicherbereich bleibt dann bestehen, damit auch dessen bisherige *MemoryID gültig).
Der Inhalt des als Parameter angegebenen (alten) Speicherbereichs 'MemoryID' wird behalten. Ist die neue 'Größe' des Speicherbereichs kleiner als die vorherige Größe, wird das Ende abgeschnitten. Ist die neue 'Größe' größer als der alte Speicherbereich, wird dieser mit Null aufgefüllt.
Hinweis: Alle reservierten Speicherbereiche werden am Programmende automatisch freigegeben.
Beispiel:*MemoryID = AllocateMemory(1000) PokeS(*MemoryID, "Speichere diesen String") ; hier kann noch mehr mit dem Speicherbereich gemacht werden... ; *NewMemoryID = ReAllocateMemory(*MemoryID, 2000) ; wir brauchen mehr Speicher If *NewMemoryID ; arbeitet jetzt mit *NewMemoryID mit einer Größe von 2000 Byte Debug "Der alte Inhalt ist noch vorhanden:" Debug PeekS(*NewMemoryID) ; FreeMemory(*NewMemoryID) Else ; das Vergrößern schlug fehl, wir arbeiten weiter mit *MemoryID (Größe 1000) ; FreeMemory(*MemoryID) EndIf
Unterstützte OS
Alle