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.