У програмирању је неопходно складиштење података. Подаци се чувају у меморији. Ове меморијске локације су познате као варијабле. Свака варијабла има одређену врсту. То могу бити цели бројеви, плутачи, парови, знакови итд. Постоје и структуре података у које се може сместити секвенцијална збирка елемената исте величине. То је низ. Програмер мора прогласити величину поља. Ако програмер изјави низ целих бројева за пет елемената, није могуће доделити вредност индексу већем од декларисане величине. Додјела меморије је фиксна и не може се мијењати у вријеме извођења. Други начин расподјеле меморије је динамичка расподјела меморије. Динамичка алокација меморије помаже да се додељује више меморије када је потребно и да се ослободи по потреби. Заглавна датотека има четири функције за динамичку расподелу меморије. цаллоц и маллоц су две такве функције. Тхе кључна разлика између цаллоц и маллоц је то цаллоц додељује меморију и такође иницијализира додељене меморијске блокове на нулу, док маллоц додељује меморију, али не иницијализира додељену меморију на нулу. Приступом садржају у цаллоц дат ће нулу, али маллоц ће дати вредност смећа.
1. Преглед и кључне разлике
2. Шта је цаллоц
3. Шта је маллоц
4. Сличности између цаллоц и маллоц
5. Упоредна упоредба - цаллоц вс маллоц у табеларном облику
6. Резиме
Додјела меморије је процес додјеле меморије извршним програмима. Понекад је потребно променити величину меморије. Због тога се користи динамичка алокација меморије. То се врши помоћу показивача. Показивачи су референтне варијабле које садрже адресу друге променљиве.
Слика 01: цаллоц и маллоц
цаллоц је „непрекидна алокација“. Она распоређује више блокова меморије исте величине. Синтакса за цаллоц је следећа. Потребна су два аргумента. Они су број блокова и величина сваког блока. Функција цаллоц враћа поидални показивач, па се цаст оператор користи за враћени тип показивача према потребном типу података.
воид * цаллоц (величина_т број, величина_т величина);
Погледајте ниже једноставан Ц програм.
#инцлуде
#инцлуде
инт маин ()
инт птр * = (инт *) цаллоц (20, величина (инт));
ако је (птр == НУЛЛ)
принтф („Меморија није додељена“);
елсе
принтф („Меморија је додељена“);
ретурн 0;
Према горе наведеном програму, додељен је непрекидни блок меморије који може да садржи 20 елемената. Свака ће имати величину целог броја. Сизеоф (инт) се користи јер тип целог броја варира од преводиоца до преводиоца.
Ако је доделитев меморије успешна, вратит ће основну адресу меморијског блока. То значи да показивач птр сада показује на основну адресу тог меморијског блока. Сви додељени региони се иницијализирају у нуле. Штампат ће поруку додељено у меморији. Ако додељивање меморије није успело, вратиће нулти поинтер. Стога ће се исписати порука Меморија није додијељена.
Функција маллоц се користи за расподелу потребне количине бајта у меморији. Синтакса за маллоц је следећа. Величина представља потребну меморију у бајтовима.
воид * маллоц (сизе_т_сизе);
Функција маллоц враћа поидални показивач, па се цаст оператор користи за враћени тип показивача према потребном типу података.
Погледајте ниже једноставан Ц програм са маллоц функцијом.
#инцлуде
#инцлуде
инт маин ()
инт птр * = (инт *) маллоц (10 * сизеоф (инт));
ако је (птр == НУЛЛ)
принтф („Меморија није додељена“);
елсе
принтф („Меморија је додељена“);
ретурн 0;
Према горе наведеном програму, биће додељен блок меморије. Показивач показује на почетну адресу додељене меморије. Враћени показивач се претвара у цео тип. Ако је додељена меморија, она ће одштампати меморију и доделити поруку. Ако меморија није додељена, вратит ће се нулл поинтер. Дакле, меморија која није додељена ће се исписати.
цаллоц вс маллоц | |
цаллоц је функција за динамичку расподелу меморије у датотеци заглавља стдлиб.х језика Ц која додељује одређени број бајтова и иницијализира их на нулу. | маллоц је функција за динамичку расподелу меморије у датотеци заглавља стдлиб.х језика Ц која додељује одређени број бајтова. |
Значење | |
цаллоц представља непрекидну расподелу. | маллоц означава доделу меморије. |
Синтакса | |
цаллоц прати синтаксу сличну празнини * цаллоц (сизе_т_нум, сизе_т сизе); | маллоц прати синтаксу сличну воид * маллоц (сизе_т_сизе);. |
Број аргумената | |
цаллоц узима два аргумента. Они су број блокова и величина сваког блока. | маллоц узима један аргумент. То је број бајтова. |
Брзина | |
цаллоц траје мало дуже него маллоц. То је због додатног корака иницијализације додељене меморије на нулу. | маллоц је бржи од цаллоц. |
У статичкој расподјели меморије, попут нас, помоћу низова, меморија је фиксирана. Ако је похрањено мало елемената, остатак меморије се троши. Такође може проузроковати грешке када је додељена меморија мала од потребне меморије. Због тога се користи динамичка алокација меморије. На језику Ц, цаллоц и маллоц омогућавају динамичку расподелу меморије. Разлика између цаллоц и маллоц је у томе што цаллоц додељује меморију и такође иницијализира додељене меморијске блокове у нулу, док маллоц додељује меморију, али не иницира меморијске блокове у нулу. Маллоц узима два аргумента, док цаллоц има два аргумента.
Можете преузети ПДФ верзију овог чланка и користити је за оффлине употребу према напомени. Молимо преузмите ПДФ верзију овде: Разлика између цаллоц и маллоц
1.Кумар, Крисхан. „Разлика између Маллока и Цаллоца у Ц.“ Цс-Фундаменталс.цом, Цс-Фундаменталс.цом. Доступно овде
2. „Ц динамичка алокација меморије.“ Википедиа, Фондација Викимедиа, 13. јануара 2018. Доступно овде
3. „Цаллоц () насупрот маллоц ().“ ГеексфорГеекс, 14. јуна 2017. Доступно овде