Hva er Realloc ()?
realloc () er en funksjon av C-biblioteket for å legge til mer minnestørrelse til allerede tildelte minneblokker. Hensikten med realloc i C er å utvide gjeldende minneblokker mens du lar originalinnholdet være som det er. realloc () -funksjonen hjelper til med å redusere størrelsen på tidligere tildelt minne med malloc- eller calloc-funksjoner. realloc står for omdisponering av minne.
Syntaks for realloc i C
ptr = realloc (ptr,newsize);
Ovennevnte uttalelse tildeler et nytt minne med en spesifisert størrelse i variabelen nyhetsstørrelse. Etter at funksjonen er utført, vil pekeren returneres til den første byten i minneblokken. Den nye størrelsen kan være større eller mindre enn forrige minne. Vi kan ikke være sikre på at hvis den nylig tildelte blokken vil peke til samme sted som den forrige minneblokken. Realloc-funksjonen i C vil kopiere alle tidligere data i den nye regionen. Det sørger for at data forblir trygge.
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;}
Slik bruker du Realloc ()
Programmet nedenfor i C demonstrerer hvordan du bruker realloc i C for å omdisponere minnet.
#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 av realloc i C-eksempel:
Memory created successfully
Hver gang reallokering resulterer i en mislykket operasjon, returnerer den en nullpeker, og de forrige dataene blir også frigjort.