Разлика между calloc и malloc

Ключова разлика - calloc vs malloc

При програмирането е необходимо да се съхраняват данни. Данните се съхраняват в паметта. Тези места в паметта са известни като променливи. Всяка променлива има определен тип. Те могат да бъдат цели числа, поплавъци, двойки, знаци и т.н. Има също така структури от данни, които могат да съхраняват последователна колекция от елементи от същия тип с фиксиран размер. Това е масив. Програмистът трябва да декларира размера на масива. Ако програмистът декларира масив от цели числа за пет елемента, не е възможно да се присвои стойност на индекс, по-висок от декларирания размер. Разпределението на паметта е фиксирано и не може да бъде променено по време на изпълнение. Друг метод за разпределение на паметта е динамичното разпределение на паметта. Динамичното разпределение на паметта помага да се разпредели повече памет, когато се изисква, и да се освободи при необходимост. Заглавният файл има четири функции за динамично разпределение на паметта. calloc и malloc са две такива функции. Най- ключова разлика между calloc и malloc е това calloc разпределя паметта и също така инициализира разпределените блокове памет до нула, докато malloc разпределя паметта, но не инициализира, че разпределената памет е нула. Достъпът до съдържанието в calloc ще даде нула, но malloc ще даде стойност на боклука.

СЪДЪРЖАНИЕ

1. Преглед и ключова разлика
2. Какво е calloc
3. Какво е malloc
4. Прилики между calloc и malloc
5. Паралелно сравнение - calloc vs malloc в таблична форма
6. Резюме

Какво е calloc?

Разпределението на паметта е процесът на задаване на памет за изпълняващите програми. Понякога е необходимо да промените размера на паметта. Поради това се използва динамично разпределение на паметта. Извършва се с помощта на указатели. Указателите са референтни променливи, които държат адреса на друга променлива.

Фигура 01: calloc и malloc

calloc означава "непрекъснато разпределение". Той разпределя множество блокове памет с еднакъв размер. Синтаксисът за calloc е следният. Необходими са два аргумента. Те са броя на блоковете и големината на всеки блок. Функцията calloc връща невалиден указател, така че операторът за гласове се използва за връщане на тип показалец в съответствие с необходимия тип данни.

        void * calloc (размер_т номер, размер_т размер);

Вижте по-долу простата програма C.

#include

#include

int main ()

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

ако (ptr == NULL)

printf („Паметта не е разпределена“);

друг

printf („Паметта е разпределена“);

връщане 0;

Съгласно горната програма се разпределя непрекъснат блок памет, който може да побере 20 елемента. Всеки ще има размера на цяло число. Използва се sizeof (int), защото целият тип варира от компилатор до компилатор.

Ако разпределението на паметта е успешно, то ще върне базовия адрес на блока с памет. Това означава, че указателят ptr сега сочи към базовия адрес на този блок памет. Всички разпределени региони се инициализират до нули. Той ще отпечата съобщението за разпределение на паметта. Ако разпределението на паметта не е успешно, то ще върне нулевия показалец. Следователно, той ще отпечата съобщението памет не е разпределено.

Какво е malloc?

Функцията malloc се използва за разпределяне на необходимото количество байтове в паметта. Синтаксисът за malloc е следният. Размерът представлява необходимата памет в байтове.

        void * malloc (size_t_size);

Функцията malloc връща невалиден указател, така че операторът за гласове се използва за връщане на тип показалец в съответствие с необходимия тип данни.

Вижте по-долу простата програма C с функция malloc.

#include

#include

int main ()

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

ако (ptr == NULL)

printf („Паметта не е разпределена“);

друг

printf („Паметта е разпределена“);

връщане 0;

Според горната програма ще бъде разпределен блок памет. Показалецът сочи началния адрес на разпределената памет. Върнатият показалец се преобразува в цяло число. Ако е разпределена памет, тя ще отпечата паметта е разпределена съобщение. Ако паметта не е разпределена, нулев указател ще се върне. Следователно паметта не е разпределена ще се отпечата съобщение.

Какви са приликите между calloc и malloc?

  • И двете функции се декларират в заглавния файл. Това е стандартният заглавен файл на библиотеката.
  • И двете функции се използват за динамично разпределение на паметта.
  • Върнатият с calloc и malloc показалец трябва да се предава в специфичния тип.
  • При успешното разпределение на паметта и двете функции ще върнат указател с базовия адрес на блока памет.
  • Ако разпределението на паметта не е успешно, ще бъде върнат нулев указател.

Каква е разликата между calloc и malloc?

calloc vs malloc

calloc е функция за динамично разпределение на паметта в заглавния файл на езика C stdlib.h, която разпределя определен брой байтове и ги инициализира до нула. malloc е функция за динамично разпределение на паметта в заглавния файл на езика C stdlib.h, която разпределя определен брой байтове.
 значение
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 разпределя паметта, но не инициализира блоковете с памет до нула. Malloc взема два аргумента, докато calloc взема два аргумента.

Изтеглете PDF на calloc срещу malloc

Можете да изтеглите PDF версията на тази статия и да я използвате за офлайн цели, съгласно цитираната бележка. Моля, изтеглете PDF версията тук: Разлика между calloc и malloc

справка:

1.Кумар, Кришан. „Разлика между Малок и Калок в В.“ Cs-Fundamentals.com, Cs-Fundamentals.com. Налични тук  
2. "C динамично разпределение на паметта." Уикипедия, Фондация Уикимедия, 13 януари 2018 г. Достъпно тук 
3. „Calloc () срещу malloc ().“ GeeksforGeeks, 14 юни 2017 г. Достъпно тук