realloc

Aus RAD Studio
Wechseln zu: Navigation, Suche

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++

+

+

+

+