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