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