Різниця між calloc та malloc

Ключова різниця - calloc vs malloc

У програмуванні необхідно зберігати дані. Дані зберігаються в пам'яті. Ці місця пам'яті відомі як змінні. Кожна змінна має певний тип. Вони можуть бути цілими числами, поплавцями, парними символами тощо. Існують також структури даних, які можуть зберігати послідовну колекцію елементів одного типу з фіксованим розміром. Це масив. Програміст повинен оголосити розмір масиву. Якщо програміст оголошує масив цілих чисел для п’яти елементів, неможливо призначити значення індексу, що перевищує оголошений розмір. Розподіл пам'яті фіксовано, і його неможливо змінити під час виконання. Інший метод розподілу пам'яті - це динамічне розподілення пам'яті. Динамічний розподіл пам’яті допомагає виділити більше пам'яті, коли це потрібно, і звільнити, коли це необхідно. Файл заголовка має чотири функції для динамічного розподілу пам'яті. calloc і malloc - дві такі функції. The ключова різниця між calloc і malloc - це те, що calloc виділяє пам'ять, а також ініціалізує виділені блоки пам'яті до нуля, тоді як malloc виділяє пам'ять, але не ініціалізує, що виділила пам'ять до нуля. Доступ до вмісту calloc дасть нуль, але malloc дасть значення сміття.

ЗМІСТ

1. Огляд та ключові відмінності
2. Що таке calloc
3. Що таке малок
4. Подібність між calloc та malloc
5. Порівняльне порівняння - calloc vs malloc у табличній формі
6. Підсумок

Що таке calloc?

Розподіл пам'яті - це процес призначення пам'яті для виконуваних програм. Іноді доводиться змінювати розмір пам'яті. Тому використовується динамічне розподіл пам’яті. Це робиться за допомогою покажчиків. Покажчики - це опорні змінні, що містять адресу іншої змінної.

Малюнок 01: calloc та malloc

calloc означає «безперервне виділення». Він виділяє кілька блоків пам'яті однакового розміру. Синтаксис calloc такий. Це бере два аргументи. Вони - кількість блоків і розмір кожного блоку. Функція calloc повертає недійсний вказівник, тому оператор керування використовується для повернення типу вказівника відповідно до необхідного типу даних.

        void * calloc (size_t num, size_t size);

Дивіться нижче просту програму C.

#включати

#включати

int main ()

int ptr * = (int *) calloc (20, sizeof (int));

якщо (ptr == NULL)

printf ("Пам'ять не виділено");

ще

printf ("Виділено пам'ять");

повернути 0;

Згідно з вищезазначеною програмою, виділяється суміжний блок пам'яті, який може вмістити 20 елементів. Кожен матиме розмір цілого числа. Sizeof (int) використовується тому, що тип цілого числа змінюється від компілятора до компілятора.

Якщо розподіл пам'яті вдалий, він поверне базову адресу блоку пам'яті. Це означає, що вказівник ptr тепер вказує на базову адресу цього блоку пам'яті. Усі виділені регіони ініціалізуються на нулі. Він надрукує повідомлення про виділення пам'яті. Якщо розподіл пам'яті не вдалося, він поверне нульовий покажчик. Тому він буде надрукувати пам'ять, не виділене повідомлення.

Що таке малок?

Функція malloc використовується для розподілу необхідної кількості байтів у пам'яті. Синтаксис для malloc такий. Розмір представляє необхідну пам'ять у байтах.

        void * malloc (size_t_size);

Функція malloc повертає недійсний вказівник, тому оператор керування використовується для повернення типу вказівника відповідно до необхідного типу даних.

Перегляньте нижче просту програму C з функцією malloc.

#включати

#включати

int main ()

int ptr * = (int *) malloc (10 * sizeof (int));

якщо (ptr == NULL)

printf ("Пам'ять не виділено");

ще

printf ("Виділено пам'ять");

повернути 0;

Відповідно до вищезгаданої програми, буде виділено блок пам'яті. Вказівник вказує на вихідну адресу виділеної пам'яті. Повернений покажчик перетворюється на цілий тип. Якщо пам'ять виділена, вона буде друкувати пам'ять, виділяється повідомлення. Якщо пам'ять не виділена, нульовий покажчик повернеться. Тому пам'ять не виділено, повідомлення буде надруковано.

Які подібності між calloc та malloc?

  • Обидві ці функції оголошені у файлі заголовка. Це стандартний файл заголовка бібліотеки.
  • Обидві функції використовуються для динамічного розподілу пам'яті.
  • Вказівник, повернутий calloc та malloc, слід вводити у певний тип.
  • При успішному розподілі пам'яті обидві функції повернуть покажчик із базовою адресою блоку пам'яті.
  • Якщо розподіл пам'яті не вдалося, повернеться нульовий покажчик.

Яка різниця між calloc та malloc?

calloc vs malloc

calloc - це функція динамічного розподілу пам'яті у файлі заголовка stdlib.h мови C, яка виділяє певну кількість байтів та ініціалізує їх до нуля. malloc - це функція динамічного розподілу пам'яті у файлі заголовка stdlib.h мови C, що виділяє певну кількість байтів.
 Значення
calloc означає безперервне виділення. malloc означає розподіл пам'яті.
Синтаксис
calloc дотримується синтаксису, подібного до void * calloc (size_t_num, size_t size); malloc дотримується синтаксису, подібного до void * malloc (size_t_size);.
 Кількість аргументів
calloc бере два аргументи. Вони - це кількість блоків і розмір кожного блоку. malloc бере один аргумент. Це ряд байтів.
Швидкість
calloc займає трохи більше часу, ніж malloc. Це через додатковий крок ініціалізації виділеної пам'яті на нуль. malloc швидше, ніж calloc.

Підсумок - calloc vs malloc

У статичному розподілі пам'яті, такому в нас за допомогою масивів, пам'ять фіксується. Якщо збережено небагато елементів, то решта пам'яті витрачається даремно. Це також може спричинити помилки, коли виділена пам'ять мала, ніж потрібна. Тому використовується динамічне розподіл пам’яті. На мові С calloc та malloc забезпечують динамічне розподіл пам'яті. Різниця між calloc та malloc полягає в тому, що calloc виділяє пам'ять, а також ініціалізує виділені блоки пам'яті до нуля, тоді як malloc виділяє пам'ять, але не ініціалізує блоки пам'яті до нуля. Маллок приймає два аргументи, тоді як calloc - два аргументи.

Завантажте PDF-файл calloc vs malloc

Ви можете завантажити PDF-версію цієї статті та використовувати її в офлайн-цілях відповідно до посилань. Завантажте PDF-версію тут: Різниця між calloc та malloc

Довідка:

1.Кумар, Кришан. "Різниця між Маллоком і Каллоком в С." Cs-Fundamentals.com, Cs-Fundamentals.com. Доступний тут  
2. "Динамічне розподілення пам'яті". Вікіпедія, Фонд Вікімедіа, 13 січня 2018 р. Доступний тут 
3. "Calloc () проти malloc ()." GeeksforGeeks, 14 червня 2017. Доступно тут