Mis on realloc ()?
realloc () on C-teegi funktsioon juba eraldatud mäluplokkidele suurema mälumahu lisamiseks. C-s realloci eesmärk on laiendada praeguseid mäluplokke, jättes algse sisu selliseks, nagu see on. funktsioon realloc () aitab eelnevalt eraldatud mälu mahtu vähendada malloc- või calloc-funktsioonide abil. realloc tähistab mälu ümberjaotamist.
Süntaksi ümberpaigutamiseks C-s
ptr = realloc (ptr,newsize);
Ülaltoodud lause eraldab muutuja newsize uue kindla suurusega mäluruumi. Pärast funktsiooni täitmist tagastatakse kursor mäluploki esimesse baiti. Uus suurus võib olla suurem või väiksem kui eelmine mälu. Me ei saa olla kindlad, kas äsja eraldatud plokk osutab samale asukohale kui eelmine mäluplokk. Funktsioon C realloc-funktsioon kopeerib kõik varasemad andmed uues piirkonnas. See tagab, et andmed jäävad ohutuks.
Näiteks:
#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;}
Realloci () kasutamine
Allpool olev C-programmi programm demonstreerib, kuidas kasutada C-failis realloci mälu ümberpaigutamiseks.
#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;}
Realloki tulemus näites C:
Memory created successfully
Alati, kui ümberjaotamine põhjustab ebaõnnestunud toimingu, tagastab see nullkursori ja ka eelmised andmed vabastatakse.