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