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
- Забележи това sizeof(*ptr) беше използвано вместо sizeof(int) за да направи кода по-стабилен, когато *ptr декларацията се преобразува към различен тип данни по-късно.
- Разпределението може да се провали, ако паметта не е достатъчна. В този случай той връща NULL указател. Така че трябва да включите код за проверка за NULL указател.
- Имайте предвид, че разпределената памет е непрекъсната и може да се третира като масив. Можем да използваме аритметика на указателя за достъп до елементите на масива, вместо да използваме скоби []. Съветваме ви да използвате + за препращане към елементи на масива, тъй като използването на нарастване ++ или += променя адреса, съхранен от показалка.
Функцията Malloc може да се използва и със символен тип данни, както и със сложни типове данни, като например структури.