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

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

ԲՈՎԱՆԴԱԿՈՒԹՅՈՒՆ

1. ակնարկ և հիմնական տարբերություն
2. Ինչ է calloc- ը
3. Ինչ է մալոկը
4. Նմանություններ calloc- ի և malloc- ի միջև
5. Կողք կողքի համեմատություն - calloc vs malloc ՝ աղյուսակային ձևով
6. Ամփոփում

Ինչ է calloc- ը:

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

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

void * calloc (size_t num, size_t չափ);

Տե՛ս ստորև նշված պարզ C ծրագիրը:

#include

#include

int main ()

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

եթե (ptr == NULL)

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

}

ուրիշ {

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

}

վերադարձ 0;

}

Համաձայն վերը նշված ծրագրի ՝ հատկացվում է հիշողության մի հարակից բլոկ, որը կարող է ունենալ 20 տարր: Յուրաքանչյուրը կունենա ամբողջ թիվ: Չափման չափը (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 vs malloc

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

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

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

Հղում.

1.Կումար, Քրիշան: «Տարբերությունը Malloc- ի և Calloc- ի միջև C.- ում»: Cs-Fundamentals.com, Cs-Fundamentals.com: Հասանելի է այստեղ
2. «C դինամիկ հիշատակի տեղաբաշխում»: Վիքիպեդիա, Վիքիմեդիա Հիմնադրամ, 2018 թ. Հունվարի 13-ին
3. «Calloc () ընդդեմ malloc ()»: GeeksforGeeks, 14 Հունիսի 2017. Հասանելի է այստեղ