Mi az a realloc ()?
A realloc () a C könyvtár függvénye, amely nagyobb memória méretet ad hozzá a már kiosztott memória blokkokhoz. A C-ben történő átcsoportosítás célja az aktuális memóriablokkok kibővítése, miközben az eredeti tartalmat a jelenlegi állapotában hagyja. A realloc () függvény csökkenti a korábban kiosztott memória méretét malloc vagy calloc függvényekkel. A realloc a memória átcsoportosítását jelenti.
Szintaxis a C átcsoportosításához
ptr = realloc (ptr,newsize);
A fenti utasítás új memóriaterületet rendel hozzá egy meghatározott méretűhez a newsize változóban. A funkció végrehajtása után a mutató visszatér a memóriablokk első bájtjához. 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 mutat-e, mint az előző memóriablokk. A C-ben található realloc függvény az összes korábbi adatot átmásolja az új régióban. Biztosítja, hogy az adatok biztonságban maradjanak.
Például:
#includeint 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 sizestrcat(ptr, " In 'C'");printf(" %s, Address = %u\n", ptr, ptr);free(ptr);return 0;}
A realloc () használata
Az alábbi C nyelvű program bemutatja, hogyan lehet a C realloc-ot használni a memória átcsoportosításához.
#include#include 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;}
Az átcsoportosítás eredménye a C példában:
Memory created successfully
Ha az átcsoportosítás sikertelen műveletet eredményez, akkor null mutatót ad vissza, és a korábbi adatok is felszabadulnak.