realloc() Függvény a C Library-ben: Hogyan kell használni? Szintaxis és példa

Mi az a realloc()?

realloc() a C könyvtár funkciója, amellyel nagyobb memóriaméretet ad a már lefoglalt memóriablokkokhoz. A realloc célja a C-ben az aktuális memóriablokkok bővítése, miközben az eredeti tartalom a régiben marad. A realloc() függvény segít csökkenteni a malloc vagy calloc függvények által korábban lefoglalt memória méretét. A realloc a memória újraelosztását jelenti.

A realloc szintaxisa C-ben

ptr = realloc (ptr,newsize);

A fenti utasítás egy új memóriaterületet foglal le meghatározott mérettel a newsize változóban. Végrehajtása után a funkció, a mutató visszakerül a memóriablokk első bájtjába. Az új méret lehet nagyobb vagy kisebb, mint az előző memória. Nem lehetünk biztosak abban, hogy az újonnan lefoglalt blokk ugyanarra a helyre fog mutatni, mint az előző memóriablokk. A C realloc függvénye átmásolja az összes korábbi adatot az új régióba. Biztosítja, hogy az adatok biztonságban maradjanak.

Például:

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

A realloc() használata

Az alábbi program C nyelven bemutatja, hogyan lehet a realloc-ot C-ben használni a memória újraelosztására.

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

    }

A realloc eredménye C példában:

Memory created successfully

Amikor a realloc sikertelen műveletet eredményez, visszaadja a null mutató, és a korábbi adatok is felszabadulnak.