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.