Kaj je realloc ()?
realloc () je funkcija knjižnice C za dodajanje večje velikosti pomnilnika že dodeljenim pomnilniškim blokom. Namen realloca v jeziku C je razširiti trenutne pomnilniške bloke, hkrati pa pustiti izvirno vsebino, kakršna je. Funkcija realloc () pomaga zmanjšati velikost predhodno dodeljenega pomnilnika s funkcijami malloc ali calloc. realloc pomeni prerazporeditev spomina.
Sintaksa za realloc v jeziku C
ptr = realloc (ptr,newsize);
Zgornji stavek dodeli nov pomnilniški prostor z določeno velikostjo v spremenljivki newsize. Po izvedbi funkcije se kazalec vrne na prvi bajt pomnilniškega bloka. Nova velikost je lahko večja ali manjša od prejšnjega pomnilnika. Ne moremo biti prepričani, ali bo novo dodeljeni blok kazal na isto mesto kot prejšnji pomnilniški blok. Funkcija realloc v C bo kopirala vse prejšnje podatke v novi regiji. Zagotavlja, da bodo podatki ostali varni.
Na primer:
#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;}
Kako uporabljati realloc ()
Spodnji program v jeziku C prikazuje, kako uporabiti realloc v jeziku C za prerazporeditev pomnilnika.
#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 primera realloc v C:
Memory created successfully
Kadarkoli realloc povzroči neuspešno operacijo, vrne ničelni kazalec in sprostijo se tudi prejšnji podatki.