Realloc () Funktio C-kirjastossa: Kuinka käyttää? Opi esimerkin avulla

Sisällysluettelo:

Anonim

Mikä on realloc ()?

realloc () on C-kirjaston funktio lisätä muistikokoa jo varattuihin muistilohkoihin. C: n uudelleenjakamisen tarkoituksena on laajentaa nykyisiä muistilohkoja ja jättää alkuperäinen sisältö sellaisenaan. realloc () -toiminto auttaa pienentämään aiemmin allokoitua muistia malloc- tai calloc-funktioilla. realloc tarkoittaa muistin uudelleenjakoa.

Syntaksi reallocille C: ssä

ptr = realloc (ptr,newsize);

Yllä oleva lauseke varaa uuden muistitilan, jolla on määritelty koko muuttujassa newsize. Toiminnon suorittamisen jälkeen osoitin palautetaan muistilohkon ensimmäiseen tavuun. Uusi koko voi olla suurempi tai pienempi kuin edellinen muisti. Emme voi olla varmoja siitä, että jos uusi varattu lohko osoittaa samaan sijaintiin kuin edellinen muistilohko. C: n realloc-toiminto kopioi kaikki aiemmat tiedot uudelta alueelta. Se varmistaa, että tiedot pysyvät turvassa.

Esimerkiksi:

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

Kuinka käyttää reallocia ()

Alla oleva C-ohjelma osoittaa, kuinka C: n reallocia käytetään muistin uudelleenjakoon.

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

Realloc-tulos C-esimerkissä:

Memory created successfully

Aina kun uudelleenjako johtaa epäonnistuneeseen toimintaan, se palauttaa nollan osoittimen ja myös edelliset tiedot vapautetaan.