realloc()-funksjon i C-bibliotek: Hvordan bruke? Syntaks og eksempel
Hva er realloc()?
realloc() er en funksjon av C-biblioteket for รฅ legge til mer minnestรธrrelse til allerede tildelte minneblokker. Hensikten med omplassering i C er รฅ utvide gjeldende minneblokker samtidig som det originale innholdet blir som det er. realloc()-funksjonen hjelper til med รฅ redusere stรธrrelsen pรฅ tidligere tildelt minne med malloc- eller calloc-funksjoner. realloc stรฅr for omallokering av minne.
Syntaks for realloc i C
ptr = realloc (ptr,newsize);
Utsagnet ovenfor tildeler en ny minneplass med en spesifisert stรธrrelse i variabelen nyhetsstรธrrelse. Etter รฅ ha utfรธrt funksjon, vil pekeren bli returnert til den fรธrste byten i minneblokken. Den nye stรธrrelsen kan vรฆre stรธrre eller mindre enn det forrige minnet. Vi kan ikke vรฆre sikre pรฅ at hvis den nylig tildelte blokken vil peke til samme plassering som den forrige minneblokken. Realloc-funksjonen i C vil kopiere alle tidligere data i den nye regionen. Det sรธrger for at data forblir trygge.
For eksempel:
#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;
}
Hvordan bruke realloc()
Programmet nedenfor i C viser hvordan du bruker realloc i C for รฅ omfordele minnet.
#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;
}
Resultat av omfordelingen i C-eksempel:
Memory created successfully
Hver gang omfordelingen resulterer i en mislykket operasjon, returnerer den en nullpeker, og tidligere data frigjรธres ogsรฅ.
