Funkce realloc() v knihovně C: Jak používat? Syntaxe a příklad
Co je realloc()?
realloc() je funkce knihovny C pro přidání větší velikosti paměti k již přiděleným paměťovým blokům. Účelem realloc v C je rozšířit aktuální paměťové bloky a ponechat původní obsah tak, jak je. Funkce realloc() pomáhá zmenšit velikost dříve přidělené paměti pomocí funkcí malloc nebo calloc. realloc znamená přerozdělení paměti.
Syntaxe pro realloc v C
ptr = realloc (ptr,newsize);
Výše uvedený příkaz alokuje nový paměťový prostor se zadanou velikostí v proměnné newsize. Po provedení funkce, ukazatel se vrátí na první bajt paměťového bloku. Nová velikost může být větší nebo menší než předchozí paměť. Nemůžeme si být jisti, že pokud nově přidělený blok bude ukazovat na stejné místo jako předchozí paměťový blok. Funkce realloc v C zkopíruje všechna předchozí data v nové oblasti. Zajišťuje, že data zůstanou v bezpečí.
Například:
#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; }
Jak používat realloc()
Níže uvedený program v C ukazuje, jak použít realloc v C k přerozdělení paměti.
#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; }
Výsledek realloc v příkladu C:
Memory created successfully
Kdykoli má realloc za následek neúspěšnou operaci, vrátí a nulový ukazatela předchozí data jsou také uvolněna.