Realloc () Funktsioon C teegis: kuidas kasutada? Õppige näite abil

Lang L: none (table-of-contents):

Anonim

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:

#include 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 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.