Տարբերությունը calloc-ի և malloc-ի միջև

Բովանդակություն:

Տարբերությունը calloc-ի և malloc-ի միջև
Տարբերությունը calloc-ի և malloc-ի միջև

Video: Տարբերությունը calloc-ի և malloc-ի միջև

Video: Տարբերությունը calloc-ի և malloc-ի միջև
Video: Ո՞րն է քրիստոնեության և մահմեդականության տարբերությունը 2024, Հուլիսի
Anonim

Հիմնական տարբերություն – calloc vs malloc

Ծրագրավորման մեջ անհրաժեշտ է պահպանել տվյալներ։ Տվյալները պահվում են հիշողության մեջ: Այս հիշողության վայրերը հայտնի են որպես փոփոխականներ: Յուրաքանչյուր փոփոխական ունի որոշակի տեսակ: Դրանք կարող են լինել ամբողջ թվեր, լողացողներ, կրկնակիներ, նիշեր և այլն: Կան նաև տվյալների կառուցվածքներ, որոնք կարող են պահել նույն տիպի տարրերի ֆիքսված չափի հաջորդական հավաքածու: Դա զանգված է։ Ծրագրավորողը պետք է հայտարարի զանգվածի չափը: Եթե ծրագրավորողը հինգ տարրերի համար հայտարարում է ամբողջ թվերի զանգված, ապա հնարավոր չէ արժեք վերագրել հայտարարված չափից բարձր ցուցանիշին։ Հիշողության տեղաբաշխումը ֆիքսված է, և այն հնարավոր չէ փոխել գործարկման ժամանակ:Հիշողության բաշխման այլ եղանակ է հիշողության դինամիկ տեղաբաշխումը: Հիշողության դինամիկ տեղաբաշխումն օգնում է անհրաժեշտության դեպքում ավելի շատ հիշողություն հատկացնել և անհրաժեշտության դեպքում ազատել: Վերնագրի ֆայլն ունի չորս գործառույթ՝ դինամիկ հիշողության բաշխման համար: calloc-ը և malloc-ը նման երկու գործառույթ են: Calloc-ի և malloc-ի հիմնական տարբերությունն այն է, որ calloc-ը հատկացնում է հիշողությունը և նաև սկզբնավորում է հատկացված հիշողության բլոկները զրոյի, մինչդեռ malloc-ը հատկացնում է հիշողությունը, բայց չի նախաստորագրում այդ հատկացված հիշողությունը զրոյի: Caloc-ում բովանդակություն մուտք գործելը կտա զրո, բայց malloc-ը կտա աղբի արժեք:

Ի՞նչ է calloc-ը:

Հիշողության տեղաբաշխումը կատարող ծրագրերի համար հիշողություն հատկացնելու գործընթացն է: Երբեմն անհրաժեշտ է լինում փոխել հիշողության չափը։ Հետեւաբար, օգտագործվում է դինամիկ հիշողության բաշխում: Այն կատարվում է ցուցիչների միջոցով: Ցուցիչները հղման փոփոխականներ են, որոնք պահում են մեկ այլ փոփոխականի հասցեն:

Տարբերությունը calloc-ի և malloc-ի միջև
Տարբերությունը calloc-ի և malloc-ի միջև

Նկար 01. calloc և malloc

calloc նշանակում է «հարակից տեղաբաշխում»: Այն հատկացնում է նույն չափի հիշողության բազմաթիվ բլոկներ: Calloc-ի շարահյուսությունը հետևյալն է. Այն պահանջում է երկու փաստարկ. Դրանք բլոկների քանակն են և յուրաքանչյուր բլոկի չափը: Caloc ֆունկցիան վերադարձնում է դատարկ ցուցիչ, ուստի cast օպերատորն օգտագործվում է վերադարձված ցուցիչի տիպի համար՝ ըստ անհրաժեշտ տվյալների տեսակի:

voidcalloc (size_t num, size_t size);

Վերադարձեք ստորև պարզ C ծրագրին:

ներառել

ներառել

int main(){

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

if (ptr==NULL){

printf («Հիշողությունը հատկացված չէ»);

}

այլ{

printf («Հիշողությունը հատկացված է»);

}

վերադարձ 0;

}

Ըստ վերոնշյալ ծրագրի՝ հատկացվում է հիշողության հարակից բլոկ, որը կարող է պահել 20 տարր։ Յուրաքանչյուրը կունենա ամբողջ թվի չափ: sizeof(int)-ն օգտագործվում է, քանի որ ամբողջ թվի տեսակը տարբերվում է կոմպիլյատորից մինչև կոմպիլյատոր:

Եթե հիշողության բաշխումը հաջող է, այն կվերադարձնի հիշողության բլոկի հիմնական հասցեն: Դա նշանակում է, որ ptr ցուցիչն այժմ ցույց է տալիս այդ հիշողության բլոկի հիմնական հասցեն: Բոլոր հատկացված շրջանները սկզբնավորվում են զրոյի: Այն կտպագրի Հիշողության հատկացված հաղորդագրությունը: Եթե հիշողության բաշխումն անհաջող է, այն կվերադարձնի զրոյական ցուցիչը: Հետևաբար, այն կտպագրի Հիշողությունը հատկացված չէ հաղորդագրություն:

Ի՞նչ է մալոկը:

Malloc ֆունկցիան օգտագործվում է հիշողության մեջ բայթերի անհրաժեշտ քանակությունը հատկացնելու համար: Malloc-ի շարահյուսությունը հետևյալն է. Չափը ներկայացնում է պահանջվող հիշողությունը բայթերով:

void malloc(size_t_size);

Malloc ֆունկցիան վերադարձնում է դատարկ ցուցիչ, ուստի cast օպերատորն օգտագործվում է վերադարձված ցուցիչի տիպի համար՝ ըստ անհրաժեշտ տվյալների տեսակի:

Տե՛ս ստորև բերված պարզ C ծրագիրը malloc ֆունկցիայով:

ներառել

ներառել

int main(){

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

if (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

Ստատիկ հիշողության բաշխման դեպքում, օրինակ, զանգվածների օգտագործմամբ, հիշողությունը ֆիքսված է: Եթե քիչ տարրեր են պահվում, ապա հիշողության մնացած մասը վատնում է: Այն կարող է նաև սխալներ առաջացնել, երբ հատկացված հիշողությունը փոքր է, քան պահանջվող հիշողությունը: Հետեւաբար, օգտագործվում է դինամիկ հիշողության բաշխում: C լեզվով calloc-ը և malloc-ը ապահովում են հիշողության դինամիկ տեղաբաշխում: Calloc-ի և malloc-ի միջև տարբերությունն այն է, որ calloc-ը հատկացնում է հիշողությունը և նաև սկզբնավորում է հատկացված հիշողության բլոկները զրոյի, մինչդեռ malloc-ը հատկացնում է հիշողությունը, բայց չի նախաստորագրում հիշողության բլոկները զրոյի: Malloc-ը վերցնում է երկու արգումենտ, մինչդեռ calloc-ը՝ երկու արգումենտ:

Ներբեռնեք calloc vs malloc-ի PDF-ը

Դուք կարող եք ներբեռնել այս հոդվածի PDF տարբերակը և օգտագործել այն անցանց նպատակներով՝ ըստ մեջբերումների: Խնդրում ենք ներբեռնել PDF տարբերակը այստեղ՝ տարբերությունը calloc-ի և malloc-ի միջև

Խորհուրդ ենք տալիս: