realloc
Nach oben zu alloc.h - Index
Header-Datei
alloc.h, stdlib.h
Kategorie
Speicherroutinen
Prototyp
void *realloc(void *block, size_t size);
Beschreibung
Dient zur erneuten Zuweisung von Hauptspeicher.
realloc versucht, den zuvor zugewiesenen Speicherblock auf size Bytes zu verkleinern oder zu erweitern. Wenn size gleich Null ist, wird der Speicherblock freigegeben und NULL zurückgegeben. Das Argument block zeigt auf einen Speicherblock, der zuvor durch einen Aufruf von malloc, calloc oder ralloc abgerufen wurde. Wenn block ein NULL-Zeiger ist, entspricht das Verhalten von realloc dem von malloc.
realloc passt die Größe des zugewiesenen Blocks an size an, wobei dessen Inhalt bei Bedarf an eine andere Speicherposition kopiert wird.
Rückgabewert
realloc gibt die Adresse des neu zugewiesenen Blocks zurück. Diese Adresse kann sich von der Adresse des Orginalblocks unterscheiden.
Wenn der Block nicht neu zugewiesen werden kann, gibt realloc NULL zurück.
Wenn size den Wert 0 hat, dann wird der Speicherblock freigegeben, und realloc gibt NULL zurück.
Beispiel
#include <stdio.h>
#include <alloc.h>
#include <string.h>
int main(void)
{
char *str;
/* Speicher für String reservieren */
str = (char *) malloc(10);
/* "Hello" in String kopieren */
strcpy(str, "Hello");
printf("String is %s\n Address is %p\n", str, str);
str = (char *) realloc(str, 20);
printf("String is %s\n New address is %p\n", str, str);
/* Speicher freigeben */
free(str);
return 0;
}
Portabilität
POSIX | Win32 | ANSI C | ANSI C++ |
---|---|---|---|
+ |
+ |
+ |
+ |