realloc() Functie in C-bibliotheek: hoe te gebruiken? Syntaxis en voorbeeld

Wat is realloc()?

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

Syntaxis voor realloc in C

ptr = realloc (ptr,newsize);

De bovenstaande instructie 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 dat 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 <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;
}

Realloc() gebruiken

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

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

    }

Resultaat van de realloc in C-voorbeeld:

Memory created successfully

Wanneer de realloc resulteert in een mislukte bewerking, retourneert het een nul punten, en de eerdere gegevens worden ook vrijgegeven.

Vat dit bericht samen met: