Funkcija realloc () u biblioteci C: Kako koristiti? Učite na primjeru

Sadržaj:

Anonim

Što je realloc ()?

realloc () je funkcija C knjižnice za dodavanje veće veličine memorije već dodijeljenim memorijskim blokovima. Svrha realloca u C je proširiti trenutne memorijske blokove, a originalni sadržaj ostaviti onakvim kakav jest. Funkcija realloc () pomaže smanjiti veličinu prethodno dodijeljene memorije pomoću funkcija malloc ili calloc. realloc je kratica za preraspodjelu memorije.

Sintaksa za realloc u C

ptr = realloc (ptr,newsize);

Gornja izjava dodjeljuje novi memorijski prostor određene veličine u varijabli newsize. Nakon izvršavanja funkcije, pokazivač će se vratiti na prvi bajt memorijskog bloka. Nova veličina može biti veća ili manja od prethodne memorije. Ne možemo biti sigurni hoće li novo dodijeljeni blok ukazivati ​​na isto mjesto kao i prethodni memorijski blok. Funkcija realloc u C kopirat će sve prethodne podatke u novoj regiji. Osigurava da podaci ostanu sigurni.

Na primjer:

#include 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 sizestrcat(ptr, " In 'C'");printf(" %s, Address = %u\n", ptr, ptr);free(ptr);return 0;} 

Kako koristiti realloc ()

Program u nastavku na C pokazuje kako koristiti realloc u C za preraspodjelu memorije.

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

Rezultat primjera realloc u C:

Memory created successfully

Kad god realloc rezultira neuspješnom operacijom, vraća null pokazivač, a oslobađaju se i prethodni podaci.