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.
