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.
