Calloc в C

Calloc в C Программирование и разработка

«Calloc» — еще одна часто используемая функция библиотеки «stdlib.h». Это означает непрерывное размещение. Как следует из названия, эта функция также используется для выделения памяти при использовании кучи вместо стека. Опять же, этот вид распределения памяти известен как распределение динамической памяти. Основная цель сегодняшнего обсуждения — пролить свет на то, как функция «calloc» работает в C. Затем мы проведем сравнение между функциями «calloc» и «malloc». Наконец, мы подробно остановимся на использовании функции «calloc» в C, поделившись с вами примером.

Работа calloc в C

Функция «calloc» используется для выделения динамической памяти во время выполнения. Вот почему он может легко удовлетворить меняющиеся требования к памяти во время выполнения. Базовый синтаксис функции «calloc» в C следующий:

$ ptr=(typecast*)calloc(num,size)

Здесь «приведение типов» представляет тип возвращаемого указателя. «Число» представляет количество смежных блоков памяти, которые вы хотите зарезервировать, тогда как «размер» относится к типу данных, которые будут назначены вашей динамически выделяемой памяти.

“calloc” против “malloc”

Работа функции «calloc» очень похожа на функцию «malloc». Однако основное различие заключается в способах распределения памяти в обеих этих функциях. Всякий раз, когда вы выделяете память с помощью функции «malloc», она не инициализирует выделенную память по умолчанию. Это означает, что если вы попытаетесь получить доступ к выделенной памяти перед инициализацией, вы получите взамен значения мусора.

С другой стороны, функция «calloc» инициализирует выделенные ячейки памяти с «0». Следовательно, даже если вы попытаетесь получить доступ к этим ячейкам памяти до фактической инициализации, даже тогда вы получите нули вместо значений мусора. Как правило, если вам нужно, чтобы выделенные ячейки памяти были инициализированы нулями по какой-либо особой причине, то лучше использовать функцию «calloc». В противном случае вы можете использовать функцию «malloc», потому что функция «malloc» не выполняет никакой инициализации по умолчанию, поэтому она немного быстрее, чем функция «calloc».

Читайте также:  Как использовать WordPress в качестве Headless CMS для Eleventy

Поняв разницу между функциями «calloc» и «malloc» в C, давайте рассмотрим пример использования функции «calloc» в C.

Пример использования calloc в C

Для использования этой функции в C мы разработали простую программу на C, показанную на следующем изображении. Во-первых, мы объявили целое число «n» и целочисленный указатель «ptr». Здесь «n» представляет количество элементов, которое вы хотите для своего динамического массива. Затем мы приняли это «n» как ввод от пользователя. После этого мы объявили нашу функцию calloc для выделения «n» блоков динамической памяти целочисленного типа.

Когда все объявление сделано, у нас есть оператор «if», в котором мы хотим проверить, равен ли наш указатель NULL. Если он равен NULL, то наш код завершится с сообщением об ошибке. Если он не равен NULL, тогда будет выполнен оператор «else», в котором мы сначала напечатали сообщение «успешное выделение памяти». После этого мы приняли значения нашего динамического массива в качестве входных данных от пользователя.

Пример использования calloc в C

Как только наш динамический массив заполнен. Мы напечатали его значения на терминале с помощью еще одного цикла «for». Наконец, мы добавили в наш код «бесплатную» функцию для освобождения динамической памяти, которую мы приобрели в этой программе, за которой следует оператор «return».

Теперь пришло время скомпилировать этот код с помощью команды, указанной ниже:

$ gcc calloc.c –o calloc

После успешной компиляции вы можете выполнить код с помощью приведенной ниже команды:

$ ./calloc

Когда мы выполним этот код, он попросит нас ввести количество элементов нашего динамического массива. Мы ввели число «3», так как хотели три разных значения. Это показано на изображении ниже:

Затем код попросит нас ввести эти значения. Мы ввели значения «1», «2» и «3» соответственно, как показано на следующем изображении:

Затем код попросит нас ввести эти значения

Как только мы введем все эти значения, наш код распечатает их на терминале, как показано на изображении ниже:

Как только мы введем все эти значения, наш код распечатает их на терминале

Теперь мы просто немного изменили наш код, чтобы мы могли проверить, действительно ли calloc инициализирует ячейки памяти с помощью «0» или нет. Для этого мы изменили наш приведенный выше код таким образом, что он только объявляет функцию «calloc» и не принимает никаких значений в качестве входных данных. Сразу после объявления этой функции мы попытались распечатать значения этих ячеек памяти, как показано на следующем изображении:Теперь мы просто немного изменили наш код, чтобы мы могли проверить

На этот раз, когда вы выполните этот код, вам будет предложено ввести количество непрерывных ячеек памяти, которое вы хотите. Мы ввели «5», как показано на изображении ниже:

Читайте также:  5 лучших концепций программирования на C для разработчиков

Мы ввели «5», как показано на изображении ниже

Как только мы нажмем клавишу ввода, значения 5 ячеек памяти нашего динамического массива будут показаны на терминале. В этом сценарии все значения будут «0», как показано на следующем изображении. Это подтверждает, что функция «calloc» инициализирует выделенную динамическую память нулями.

Это подтверждает, что функция «calloc» инициализирует выделенную динамическую память нулями

Заключение

Надеюсь, после прочтения этой статьи вы сможете четко различать функции «calloc» и «malloc» в языке программирования C. Хотя эти функции могут использоваться взаимозаменяемо, настоятельно рекомендуется сначала определить тип инициализации, который вам нужен. Только после этого вы должны решить, какая из этих функций подойдет для вашего конкретного случая, чтобы вы могли сделать свой код C более надежным и эффективным.

Оцените статью
bestprogrammer.ru
Добавить комментарий