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

<- PokeW() - Memory Inhaltsverzeichnis