realloc()-Funktion in der C-Bibliothek: Wie wird sie verwendet? Syntax und Beispiel

Was ist realloc()?

realloc() ist eine Funktion der C-Bibliothek zum Hinzufรผgen von mehr Speicher zu bereits zugewiesenen Speicherblรถcken. Der Zweck von Realloc in C besteht darin, aktuelle Speicherblรถcke zu erweitern und dabei den ursprรผnglichen Inhalt unverรคndert zu lassen. Die Funktion realloc() hilft dabei, die GrรถรŸe des zuvor durch malloc- oder calloc-Funktionen zugewiesenen Speichers zu reduzieren. Realloc steht fรผr Neuzuweisung von Speicher.

Syntax fรผr Realloc in C

ptr = realloc (ptr,newsize);

Die obige Anweisung weist einen neuen Speicherplatz mit einer angegebenen GrรถรŸe in der Variablen newsize zu. Nach der Ausfรผhrung des Funktion, wird der Zeiger auf das erste Byte des Speicherblocks zurรผckgesetzt. Die neue GrรถรŸe kann grรถรŸer oder kleiner als der vorherige Speicher sein. Wir kรถnnen nicht sicher sein, ob der neu zugewiesene Block auf denselben Speicherort verweist wie der vorherige Speicherblock. Die Realloc-Funktion in C kopiert alle vorherigen Daten in die neue Region. Es stellt sicher, dass die Daten sicher bleiben.

Beispielsweise:

#include <stdio.h>
int main () {
   char *ptr;
   ptr = (char *) malloc(10);
   strcpy(ptr, "Programming");
   printf(" %s,  Address = %u\n", ptr, ptr);

   ptr = (char *) realloc(ptr, 20); //ptr is reallocated with new size
   strcat(ptr, " In 'C'");
   printf(" %s,  Address = %u\n", ptr, ptr);
   free(ptr);
   return 0;
}

So verwenden Sie realloc()

Das folgende Programm in C zeigt, wie man realloc in C verwendet, um den Speicher neu zuzuweisen.

#include <stdio.h>
#include <stdlib.h>
    int main() {
        int i, * ptr, sum = 0;
        ptr = malloc(100);
        if (ptr == NULL) {
            printf("Error! memory not allocated.");
            exit(0);
        }
        
        ptr = realloc(ptr,500);
    if(ptr != NULL)
           printf("Memory created successfully\n");
           
    return 0;

    }

Ergebnis des Realloc im C-Beispiel:

Memory created successfully

Wenn die Realloc-Operation nicht erfolgreich ist, wird eine Null Zeiger, und die vorherigen Daten werden ebenfalls freigegeben.

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: