realloc() Funktio C-kirjastossa: Kuinka käyttää? Syntaksi ja esimerkki
Mikä on realloc()?
realloc() on C-kirjaston toiminto, joka lisää muistin kokoa jo varattuihin muistilohkoihin. Reallocin tarkoitus C:ssä on laajentaa nykyisiä muistilohkoja jättäen alkuperäinen sisältö ennalleen. realloc()-funktio auttaa pienentämään malloc- tai calloc-funktioilla aiemmin varatun muistin kokoa. realloc tarkoittaa muistin uudelleenallokointia.
Syntaksi reallocille C:ssä
ptr = realloc (ptr,newsize);
Yllä oleva käsky varaa uuden muistitilan, jonka koko on määritetty muuttujassa newsize. Suorituksen jälkeen toiminto, osoitin palautetaan muistilohkon ensimmäiseen tavuun. Uusi koko voi olla suurempi tai pienempi kuin edellinen muisti. Emme voi olla varmoja siitä, osoittaako vasta varattu lohko samaan paikkaan kuin edellinen muistilohko. C:n realloc-funktio kopioi kaikki aiemmat tiedot uudelle alueelle. Se varmistaa, että tiedot pysyvät turvassa.
Esimerkiksi:
#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; }
Kuinka käyttää realloc()
Alla oleva C:n ohjelma osoittaa, kuinka C:n realloc-toimintoa käytetään muistin uudelleenallokoimiseen.
#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; }
Reallocin tulos C-esimerkissä:
Memory created successfully
Aina kun realloc johtaa epäonnistuneeseen toimintoon, se palauttaa a nollaosoitin, ja myös aiemmat tiedot vapautetaan.