Hvad er realloc ()?
realloc () er en funktion af C-biblioteket til at tilføje mere hukommelsesstørrelse til allerede tildelte hukommelsesblokke. Formålet med realloc i C er at udvide aktuelle hukommelsesblokke, mens det originale indhold efterlades, som det er. realloc () -funktionen hjælper med at reducere størrelsen på tidligere tildelt hukommelse ved hjælp af malloc- eller calloc-funktioner. realloc står for omfordeling af hukommelse.
Syntaks til realloc i C
ptr = realloc (ptr,newsize);
Ovenstående erklæring tildeler et nyt hukommelsesrum med en specificeret størrelse i variablen nyhedsstørrelse. Efter udførelse af funktionen returneres markøren til den første byte i hukommelsesblokken. Den nye størrelse kan være større eller mindre end den forrige hukommelse. Vi kan ikke være sikre på, at hvis den nyligt tildelte blok peger på den samme placering som den forrige hukommelsesblok. Realloc-funktionen i C kopierer alle de tidligere data i den nye region. Det sørger for, at data forbliver sikre.
For eksempel:
#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;}
Sådan bruges realloc ()
Nedenstående program i C viser, hvordan man bruger realloc i C til at omfordele hukommelsen.
#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;}
Resultat af realloc i C-eksempel:
Memory created successfully
Når realloc resulterer i en mislykket operation, returnerer den en nul-markør, og de tidligere data frigøres også.