Ключова разлика: „Calloc“ и „Malloc“ се отнасят до изпълнението на динамичното разпределение на паметта в езика за програмиране C. "Calloc" инициализира разпределената памет с нула, докато "malloc" не.
Както "calloc", така и "malloc" са стандартни библиотечни функции.
Синтаксисът му е както следва:
void * calloc (номера_от_блокове, size_of_each_block_in_bytes);
Тук 'void' е обща C функция, която не връща никаква стойност. Броят на елементите в първия аргумент определя размера в байтове на един елемент към втория аргумент. Адресът се връща след успешно разделяне, в противен случай се връща NULL при всяка повреда на функцията.
Синтаксисът му е както следва:
void * malloc (size_in_bytes);
По-конкретно, той връща адреса по общ начин (void *). Ако 'malloc' не успее да разпредели паметта, тя връща -1, в противен случай връща адреса, от който е разпределена паметта. Разпределената памет може да бъде във формата на цяло число, по тип кастинг на void адреса като int *; разпределената памет може също така да бъде във формата на поплавък, само по тип, който предава същия адрес като float *.
Сравнение между Calloc и Malloc:
Calloc | изчистване | |
Основни функции | Функцията библиотека разпределя област от паметта, която е достатъчно голяма, за да държи “n елемента” от байтове с размер “всеки”. | Функцията библиотека само разпределя байта с памет "размер". |
Инициализация | Той инициализира съдържанието на паметта на нули. | Той не инициализира съдържанието на паметта в нули. |
Брой аргументи | Тук има два аргумента. | Тук има само един аргумент. |
Разпределени стойности | Определеният регион се инициализира до нула. | Съдържанието на разпределената памет не се променя, т.е. паметта съдържа непредсказуеми или отпадъчни стойности, което създава риск. |
Връща стойността | void указател (void *). След успешно разпределение се връща указател към блока памет. | void указател (void *). След успешно разпределение се връща указател към блока памет. |