realloc() Funktion i C Library: Hvordan bruger man? Syntaks og eksempel
Hvad er realloc()?
realloc() er en funktion af C-biblioteket til at tilfรธje mere hukommelsesstรธrrelse til allerede allokerede hukommelsesblokke. Formรฅlet med reallocering i C er at udvide nuvรฆrende hukommelsesblokke, mens det originale indhold forbliver som det er. realloc()-funktionen hjรฆlper med at reducere stรธrrelsen af โโtidligere allokeret hukommelse med malloc- eller calloc-funktioner. realloc stรฅr for omallokering af hukommelse.
Syntaks for realloc i C
ptr = realloc (ptr,newsize);
Ovenstรฅende sรฆtning tildeler en ny hukommelsesplads med en specificeret stรธrrelse i variablen nyhedsstรธrrelse. Efter at have udfรธrt funktion, vil markรธren blive returneret til den fรธrste byte i hukommelsesblokken. Den nye stรธrrelse kan vรฆre stรธrre eller mindre end den tidligere hukommelse. Vi kan ikke vรฆre sikre pรฅ, at hvis den nyligt allokerede blok vil pege pรฅ den samme placering som den for den tidligere hukommelsesblok. Realloc-funktionen i C vil kopiere alle de tidligere data i den nye region. Det sikrer, at data forbliver sikre.
For eksempel:
#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;
}
Sรฅdan bruger du realloc()
Nedenstรฅende program i C viser, hvordan man bruger realloc i C til at omallokere hukommelsen.
#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;
}
Resultat af reallokationen i C-eksempel:
Memory created successfully
Nรฅr realloceringen resulterer i en mislykket operation, returnerer den en null markรธr, og de tidligere data er ogsรฅ frigivet.
