Функция realloc() в C библиотека: Как да се използва? Синтаксис и пример

Какво е realloc()?

realloc() е функция на C библиотеката за добавяне на повече памет към вече разпределени блокове памет. Целта на realloc в C е да разшири текущите блокове памет, като същевременно остави оригиналното съдържание такова, каквото е. Функцията realloc() помага за намаляване на размера на предварително разпределената памет чрез функции malloc или calloc. realloc означава преразпределение на паметта.

Синтаксис за realloc в C

ptr = realloc (ptr,newsize);

Горният израз заделя ново пространство в паметта с определен размер в променливата newsize. След изпълнение на функция, указателят ще бъде върнат към първия байт на блока памет. Новият размер може да бъде по-голям или по-малък от предишната памет. Не можем да сме сигурни дали новоразпределеният блок ще сочи към същото местоположение като това на предишния блок памет. Функцията realloc в C ще копира всички предишни данни в новия регион. Той гарантира, че данните ще останат в безопасност.

Например:

#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;
}

Как да използвате realloc()

Програмата по-долу в C демонстрира как да използвате realloc в C за преразпределяне на паметта.

#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;

    }

Резултат от realloc в C пример:

Memory created successfully

Всеки път, когато realloc доведе до неуспешна операция, тя връща a нулев указател, а предишните данни също се освобождават.

Обобщете тази публикация с: