realloc() Funktsioon C raamatukogus: kuidas kasutada? Süntaks ja näide
Mis on realloc()?
realloc() on C-teegi funktsioon mälumahu lisamiseks juba eraldatud mäluplokkidele. Realloci eesmärk C-s on laiendada praeguseid mäluplokke, jättes algse sisu selliseks, nagu see on. Funktsioon realloc() aitab vähendada malloc või calloc funktsioonide poolt varem eraldatud mälu mahtu. realloc tähistab mälu ümberjaotamist.
Realloci süntaks C-s
ptr = realloc (ptr,newsize);
Ülaltoodud avaldus eraldab muutuja uudiste suuruses määratud suurusega uue mäluruumi. Pärast täitmist funktsioon, suunatakse kursor tagasi mäluploki esimesse baiti. Uus suurus võib olla suurem või väiksem kui eelmine mälu. Me ei saa olla kindlad, et kui äsja eraldatud plokk osutab samale asukohale, kus eelmine mäluplokk. Funktsioon C realloc kopeerib kõik varasemad andmed uues piirkonnas. See tagab andmete turvalisuse.
Näiteks:
#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;
}
Kuidas kasutada realloc()
Allolev programm C-s näitab, kuidas kasutada C-s mälu ümberjaotamiseks realloci.
#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;
}
Realloci tulemus C näites:
Memory created successfully
Kui ümberjaotamise tulemuseks on ebaõnnestunud toiming, tagastab see a nullkursor, ja vabastatakse ka varasemad andmed.
