realloc() Funktio C-kirjastossa: Kuinka käyttää? Syntaksi ja esimerkki

Mikä on realloc()?

realloc() on C-kirjaston toiminto, joka lisää muistin kokoa jo varattuihin muistilohkoihin. Reallocin tarkoitus C:ssä on laajentaa nykyisiä muistilohkoja jättäen alkuperäinen sisältö ennalleen. realloc()-funktio auttaa pienentämään malloc- tai calloc-funktioilla aiemmin varatun muistin kokoa. realloc tarkoittaa muistin uudelleenallokointia.

Syntaksi reallocille C:ssä

ptr = realloc (ptr,newsize);

Yllä oleva käsky varaa uuden muistitilan, jonka koko on määritetty muuttujassa newsize. Suorituksen jälkeen toiminto, osoitin palautetaan muistilohkon ensimmäiseen tavuun. Uusi koko voi olla suurempi tai pienempi kuin edellinen muisti. Emme voi olla varmoja siitä, osoittaako vasta varattu lohko samaan paikkaan kuin edellinen muistilohko. C:n realloc-funktio kopioi kaikki aiemmat tiedot uudelle alueelle. Se varmistaa, että tiedot pysyvät turvassa.

Esimerkiksi:

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

Kuinka käyttää realloc()

Alla oleva C:n ohjelma osoittaa, kuinka C:n realloc-toimintoa käytetään muistin uudelleenallokoimiseen.

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

    }

Reallocin tulos C-esimerkissä:

Memory created successfully

Aina kun realloc johtaa epäonnistuneeseen toimintoon, se palauttaa a nollaosoitin, ja myös aiemmat tiedot vapautetaan.