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