Что такое realloc ()?
realloc () - это функция библиотеки C для добавления большего объема памяти к уже выделенным блокам памяти. Цель перераспределения в C - расширить текущие блоки памяти, оставив исходное содержимое как есть. Функция realloc () помогает уменьшить размер ранее выделенной памяти функциями malloc или calloc. realloc означает перераспределение памяти.
Синтаксис для realloc в C
ptr = realloc (ptr,newsize);
Вышеупомянутый оператор выделяет новое пространство памяти с указанным размером в переменной newsize. После выполнения функции указатель будет возвращен на первый байт блока памяти. Новый размер может быть больше или меньше предыдущего размера памяти. Мы не можем быть уверены, что вновь выделенный блок будет указывать на то же место, что и предыдущий блок памяти. Функция перераспределения в C скопирует все предыдущие данные в новую область. Это гарантирует, что данные останутся в безопасности.
Например:
#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;}
Как использовать realloc ()
Приведенная ниже программа на C демонстрирует, как использовать realloc в C для перераспределения памяти.
#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;}
Результат перераспределения в примере C:
Memory created successfully
Каждый раз, когда перераспределение приводит к неудачной операции, он возвращает нулевой указатель, и предыдущие данные также освобождаются.