Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

realloc - Speicherplatz verändern

&pagelevel(4)&pagelevel

Definition

#include <stdlib.h>

void *realloc(void *zg, size_t anz);

realloc verändert die Größe des Speicherbereiches, auf den zg zeigt, in anz Bytes. Der Speicherbereich muss zuvor durch malloc oder calloc zugewiesen worden sein.

realloc ist Teil eines C-spezifischen Speicherverwaltungspaketes, das angeforderte und wieder freigegebene Speicherbereiche intern verwaltet. Neue Anforderungen werden zuerst aus bereits verwalteten Bereichen zu erfüllen versucht, dann erst vom Betriebssystem (vgl. Funktion garbcoll).

Returnwert

Zeiger auf den Anfang des geänderten Speicherbereiches, bei Erfolg.

 

NULL-Zeiger

falls realloc den Speicherplatz nicht verändern konnte, z.B. weil der noch vorhandene Speicherplatz nicht ausreicht oder ein Fehler auftrat.

Hinweise

Wenn realloc die Größe eines Speicherbereiches ändert, kann u.U. der zugewiesene Block verschoben sein. In solchen Fällen ist der Inhalt des als Argument übergebenen Zeigers nicht identisch mit dem Rückgabewert.
Der Inhalt des Blocks bleibt bis zum Minimum der alten (beim Vergrößern) bzw. neuen Größe (beim Verkleinern) erhalten.

Liefert realloc den NULL-Zeiger, kann evtl. der Block, auf den zg zeigt, zerstört worden sein!

Ist zg ein NULL-Zeiger, funktioniert realloc wie ein malloc-Aufruf für die angegebene Größe.

Falls anz den Wert 0 besitzt, liefert realloc eine eindeutige Adresse, die auch an free übergeben werden kann.

Beispiel

Folgender Programmausschnitt fordert zunächst Speicherplatz für 20 Zeichen an und erweitert diesen Bereich dann für die Aufnahme weiterer 80 Zeichen (also insgesamt auf 100 Bytes).

#include <stdlib.h>
char *char_array;
char_array = (char *)malloc(20 * sizeof(char));
    .
    .
char_array = (char *)realloc(char_array, 100 * sizeof(char));

Siehe auch

malloc, calloc, free, garbcoll