Шта је реаллоц ()?
реаллоц () је функција Ц библиотеке за додавање веће величине меморије већ додељеним меморијским блоковима. Сврха реаллоц-а у Ц је да прошири тренутне меморијске блокове, а да оригинални садржај остане такав какав јесте. функција реаллоц () помаже у смањењу величине претходно додељене меморије помоћу функција маллоц или цаллоц. реаллоц означава прерасподјелу меморије.
Синтакса за реаллоц у Ц.
ptr = realloc (ptr,newsize);
Горња изјава додељује нови меморијски простор са назначеном величином у променљивој невсизе. Након извршавања функције, показивач ће се вратити на први бајт меморијског блока. Нова величина може бити већа или мања од претходне меморије. Не можемо бити сигурни да ли ће ново додељени блок указивати на исто место као и претходни меморијски блок. Функција реаллоц у Ц ће копирати све претходне податке у новом региону. Осигурава да подаци буду сигурни.
На пример:
#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;}
Како се користи реаллоц ()
Програм у наставку на Ц-у показује како користити реаллоц у Ц-у за прерасподелу меморије.
#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;}
Резултат примера реаллоц у Ц:
Memory created successfully
Кад год реаллоц резултира неуспешном операцијом, враћа нулл показивач и ослобађају се и претходни подаци.