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.