REALLOCATE

FreeBASIC-Referenz » Alphabetische Befehlsreferenz » R » REALLOCATE

Syntax: REALLOCATE (Pointer, Bytes)
Typ: Funktion
Kategorie: Speicher

REALLOCATE ändert die Größe eines reservierten Speicherbereichs.

REALLOCATE ist kein Teil der FreeBASIC Runtime Library, sondern ein Alias von realloc der C-Lib.
Achtung: Es kann nicht garantiert werden, dass diese Funktion auf allen Plattformen Multithreading unterstützt, d.h. thread-safe ist.

Beispiel:

DIM a AS INTEGER PTR, b AS INTEGER PTR, i AS INTEGER

a = ALLOCATE(5 * LEN(INTEGER))          ' Speicher für fünf INTEGER-Stellen reservieren
FOR i = 0 TO 4
  a[i] = (i + 1) * 2                    ' Werte in den Speicher schreiben
NEXT i

b = REALLOCATE( a, 10 * LEN(INTEGER) )  ' Speicher für fünf zusätzliche Werte reservieren
FOR i = 5 TO 9
  b[i] = (i + 1) * 2                    ' Zusätzliche Werte in den Puffer schreiben
NEXT i

FOR i = 0 TO 9                          ' Werte ausgeben
  PRINT b[i];
NEXT i

DEALLOCATE b                            ' Speicher freigeben

SLEEP                                   ' Auf Tastendruck warten

Hinweis:
Wenn Speicher mit REALLOCATE vergrößert wird, ist beim Umgang mit STRINGs auf das gleiche Verhalten wie bei ALLOCATE zu achten. Der neue Speicherbereich wird nicht mit Nullen überschrieben, sodass Probleme auftreten können. Um dem entgegenzuwirken kann der neu reservierte Speicherbereich etwa mit CLEAR auf null gesetzt werden.

Unterschiede zu QB: neu in FreeBASIC

Plattformbedingte Unterschiede:
Es kann nicht garantiert werden, dass die Prozedur auf allen Plattformen thread-safe ist.

Unterschiede unter den FB-Dialektformen:
In der Dialektform -lang qb steht REALLOCATE nicht zur Verfügung und kann nur über __REALLOCATE aufgerufen werden.

Siehe auch:
ALLOCATE, CALLOCATE, DEALLOCATE, Pointer, Speicher