realloc()-funksjon i C-bibliotek: Hvordan bruke? Syntaks og eksempel

Hva er realloc()?

realloc() er en funksjon av C-biblioteket for å legge til mer minnestørrelse til allerede tildelte minneblokker. Hensikten med omplassering i C er å utvide gjeldende minneblokker samtidig som det originale innholdet blir som det er. realloc()-funksjonen hjelper til med å redusere størrelsen på tidligere tildelt minne med malloc- eller calloc-funksjoner. realloc står for omallokering av minne.

Syntaks for realloc i C

ptr = realloc (ptr,newsize);

Utsagnet ovenfor tildeler en ny minneplass med en spesifisert størrelse i variabelen nyhetsstørrelse. Etter å ha utført funksjon, vil pekeren bli returnert til den første byten i minneblokken. Den nye størrelsen kan være større eller mindre enn det forrige minnet. Vi kan ikke være sikre på at hvis den nylig tildelte blokken vil peke til samme plassering 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:

#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;
}

Hvordan bruke realloc()

Programmet nedenfor i C viser hvordan du bruker realloc i C for å omfordele minnet.

#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 av omfordelingen i C-eksempel:

Memory created successfully

Hver gang omfordelingen resulterer i en mislykket operasjon, returnerer den en nullpeker, og tidligere data frigjøres også.

Oppsummer dette innlegget med: