Referenz - CALLOCATE
Syntax: CALLOCATE (Anzahl [, Größe])
Typ: Funktion
Kategorie: Speicher
CALLOCATE reserviert einen Bereich im Speicher (Heap), setzt alle seine Bytes auf 0 (im Gegensatz zu ALLOCATE!)
- 'Anzahl' ist die Anzahl der zu reservierenden Speicherstellen.
- 'Größe' ist die Größe der Speicherstelle in Bytes. Wird 'Größe' ausgelassen, nimmt FreeBASIC automatisch 1 an. CALLOCATE kann dann wie ALLOCATE verwendet werden, mit dem Unterschied, dass alle reservierten Bytes auf null gesetzt sind.
- Der Rückgabewert ist ein Pointer auf den Anfang des reservierten Bereichs. Wenn beim Allozieren ein Fehler auftritt, ist der Rückgabewert 0 (Null-Pointer).
CALLOCATE ist kein Teil der FreeBASIC Runtime Library, sondern ein Alias von calloc der C-Lib.
Achtung: Es kann nicht garantiert werden, dass diese Funktion auf allen Plattformen Multithreading unterstützt, d.h. thread-safe ist. Unter Windows und Linux sind aktuell durch die verwendeten Implementationen der Betriebssysteme aber keine Probleme zu erwarten.
Beispiel:
' Einen INTEGER Pointer erstellen
DIM p AS INTEGER PTR
' Speicherplatz für zehn INTEGER-Werte reservieren
p = CALLOCATE(10, LEN(INTEGER))
' Den Speicherbereich mit zehn Zahlen belegen
FOR fill_p AS INTEGER = 0 TO 9
p[fill_p] = fill_p
NEXT
' Die Zahlen ausgeben
FOR show_p AS INTEGER = 0 TO 9
PRINT p[show_p]
NEXT
' Variable wieder freigeben
DEALLOCATE p
' auf Tastendruck warten und beenden
SLEEP
END
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 CALLOCATE nicht zur Verfügung und kann nur über __CALLOCATE aufgerufen werden.
Siehe auch:
ALLOCATE, REALLOCATE, DEALLOCATE, POINTER, Speicher
Zusätzliche Informationen und Funktionen | ||||
---|---|---|---|---|
|