Функція 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 нульовий покажчик, і попередні дані також звільняються.