malloc() Функція в бібліотеці C із ПРИКЛАДОМ

Що таке malloc у C?

Функція malloc() означає розподіл пам'яті. Це функція, яка використовується для динамічного виділення блоку пам'яті. Він резервує простір пам’яті заданого розміру та повертає нульовий покажчик, що вказує на розташування пам’яті. Зазвичай повертається вказівник типу void. Це означає, що ми можемо призначити функцію malloc будь-якому покажчику.

синтаксис

ptr = (cast_type *) malloc (byte_size);

Тут,

  • ptr є вказівником на cast_type.
  • Функція malloc повертає вказівник на виділену пам’ять byte_size.
Example: ptr = (int *) malloc (50)

Коли цей оператор успішно виконується, резервується простір пам’яті розміром 50 байт. Адреса першого байта зарезервованого простору присвоюється покажчику ptr типу int.

Розглянемо інший приклад реалізації malloc:

#include <stdlib.h>
int main(){
int *ptr;
ptr = malloc(15 * sizeof(*ptr)); /* a block of 15 integers */
    if (ptr != NULL) {
      *(ptr + 5) = 480; /* assign 480 to sixth integer */
      printf("Value of the 6th integer is %d",*(ptr + 5));
    }
}

вихід:

Value of the 6th integer is 480

Що таке malloc у C

  1. Зверніть увагу на це sizeof(*ptr) використовувався замість sizeof(int) щоб зробити код більш надійним, коли оголошення *ptr пізніше буде приведено до іншого типу даних.
  2. Розподіл може бути невдалим, якщо пам’яті недостатньо. У цьому випадку він повертає покажчик NULL. Отже, ви повинні включити код для перевірки покажчика NULL.
  3. Майте на увазі, що виділена пам’ять є безперервною, і її можна розглядати як масив. Ми можемо використовувати арифметику вказівника для доступу до елементів масиву замість використання дужок []. Ми радимо використовувати + для посилань на елементи масиву, оскільки використання збільшення ++ або += змінює адресу, збережену в покажчик.

Функцію Malloc також можна використовувати з символьним типом даних, а також із складними типами даних, наприклад структурами.