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 може да се използва и със символен тип данни, както и със сложни типове данни, като например структури.