Was ist realloc ()?
realloc () ist eine Funktion der C-Bibliothek zum Hinzufügen von mehr Speichergröße zu bereits zugewiesenen Speicherblöcken. Der Zweck der Neuzuweisung in C besteht darin, aktuelle Speicherblöcke zu erweitern, während der ursprüngliche Inhalt unverändert bleibt. Die Funktion realloc () hilft, die Größe des zuvor zugewiesenen Speichers durch Malloc- oder Calloc-Funktionen zu reduzieren. Realloc steht für Reallocation of Memory.
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 dem Ausführen der 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 dieselbe Position wie der vorherige Speicherblock zeigt. Die Realloc-Funktion in C kopiert alle vorherigen Daten in der neuen Region. Es stellt sicher, dass die Daten sicher bleiben.
Zum Beispiel:
#includeint 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 sizestrcat(ptr, " In 'C'");printf(" %s, Address = %u\n", ptr, ptr);free(ptr);return 0;}
Verwendung von realloc ()
Das folgende Programm in C zeigt, wie Realloc in C verwendet wird, um den Speicher neu zuzuweisen.
#include#include 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 der Neuzuordnung in C Beispiel:
Memory created successfully
Immer wenn die Neuzuweisung zu einer erfolglosen Operation führt, wird ein Nullzeiger zurückgegeben, und die vorherigen Daten werden ebenfalls freigegeben.