Realloc () Functie in C Library: hoe te gebruiken? Leer met voorbeeld

Inhoudsopgave:

Anonim

Wat is realloc ()?

realloc () is een functie van de C-bibliotheek voor het toevoegen van meer geheugengrootte aan reeds toegewezen geheugenblokken. Het doel van opnieuw toewijzen in C is om de huidige geheugenblokken uit te breiden terwijl de originele inhoud ongewijzigd blijft. realloc () functie helpt om de grootte van eerder toegewezen geheugen door malloc- of calloc-functies te verkleinen. realloc staat voor herverdeling van geheugen.

Syntaxis voor opnieuw toewijzen in C

ptr = realloc (ptr,newsize);

De bovenstaande verklaring wijst een nieuwe geheugenruimte toe met een gespecificeerde grootte in de variabele newsize. Na het uitvoeren van de functie keert de pointer terug naar de eerste byte van het geheugenblok. Het nieuwe formaat kan groter of kleiner zijn dan het vorige geheugen. We kunnen er niet zeker van zijn of het nieuw toegewezen blok naar dezelfde locatie zal verwijzen als die van het vorige geheugenblok. De realloc-functie in C kopieert alle eerdere gegevens in de nieuwe regio. Het zorgt ervoor dat gegevens veilig blijven.

Bijvoorbeeld:

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

Hoe realloc () te gebruiken

Het onderstaande programma in C laat zien hoe u realloc in C kunt gebruiken om het geheugen opnieuw toe te wijzen.

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

Resultaat van de herverdeling in C-voorbeeld:

Memory created successfully

Telkens wanneer het opnieuw toewijzen resulteert in een mislukte bewerking, retourneert het een nul-aanwijzer en worden de vorige gegevens ook vrijgegeven.