სხვაობა კალოკსა და მალოკს შორის

Სარჩევი:

სხვაობა კალოკსა და მალოკს შორის
სხვაობა კალოკსა და მალოკს შორის

ვიდეო: სხვაობა კალოკსა და მალოკს შორის

ვიდეო: სხვაობა კალოკსა და მალოკს შორის
ვიდეო: malloc vs calloc Differences Explained | C Programming Tutorial 2024, ივლისი
Anonim

ძირითადი განსხვავება – calloc vs malloc

პროგრამაში აუცილებელია მონაცემების შენახვა. მონაცემები ინახება მეხსიერებაში. მეხსიერების ეს ადგილები ცნობილია როგორც ცვლადები. თითოეულ ცვლადს აქვს კონკრეტული ტიპი. ისინი შეიძლება იყოს მთელი რიცხვები, ათწილადები, ორმაგები, სიმბოლოები და ა.შ. ასევე არსებობს მონაცემთა სტრუქტურები, რომლებსაც შეუძლიათ შეინახონ იმავე ტიპის ელემენტების ფიქსირებული ზომის თანმიმდევრული კოლექცია. ეს არის მასივი. პროგრამისტმა უნდა გამოაცხადოს მასივის ზომა. თუ პროგრამისტი გამოაცხადებს მთელი რიცხვების მასივს ხუთი ელემენტისთვის, შეუძლებელია დეკლარირებულ ზომაზე მაღალი ინდექსისთვის მნიშვნელობის მინიჭება. მეხსიერების განაწილება ფიქსირდება და მისი შეცვლა შეუძლებელია გაშვების დროს.მეხსიერების განაწილების სხვა მეთოდი არის მეხსიერების დინამიური განაწილება. დინამიური მეხსიერების განაწილება ხელს უწყობს მეტი მეხსიერების გამოყოფას საჭიროების შემთხვევაში და გამოთავისუფლებას საჭიროების შემთხვევაში. სათაურის ფაილს აქვს ოთხი ფუნქცია დინამიური მეხსიერების განაწილებისთვის. calloc და malloc არის ორი ასეთი ფუნქცია. Calloc-სა და malloc-ს შორის მთავარი განსხვავება ისაა, რომ calloc გამოყოფს მეხსიერებას და ასევე ახდენს გამოყოფილი მეხსიერების ბლოკების ინიციალიზებას ნულამდე, ხოლო malloc გამოყოფს მეხსიერებას, მაგრამ არ ახდენს ამ გამოყოფილი მეხსიერების ინიციალიზებას ნულამდე. Caloc-ში კონტენტზე წვდომა მისცემს ნულს, მაგრამ malloc მისცემს ნაგვის მნიშვნელობას.

რა არის calloc?

მეხსიერების განაწილება არის შემსრულებელი პროგრამებისთვის მეხსიერების მინიჭების პროცესი. ზოგჯერ საჭიროა მეხსიერების ზომის შეცვლა. ამიტომ გამოიყენება დინამიური მეხსიერების განაწილება. იგი კეთდება მაჩვენებლების გამოყენებით. პოინტერები არის მითითების ცვლადები, რომლებიც შეიცავს სხვა ცვლადის მისამართს.

სხვაობა calloc-სა და malloc-ს შორის
სხვაობა calloc-სა და malloc-ს შორის

სურათი 01: calloc და malloc

calloc ნიშნავს "მიმდებარე განაწილებას". ის გამოყოფს მეხსიერების რამდენიმე ბლოკს იმავე ზომით. calloc-ის სინტაქსი ასეთია. ამას ორი არგუმენტი სჭირდება. ეს არის ბლოკების რაოდენობა და თითოეული ბლოკის ზომა. ფუნქცია calloc აბრუნებს void მაჩვენებელს, ამიტომ 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 ახლა მიუთითებს ამ მეხსიერების ბლოკის საბაზისო მისამართზე. ყველა გამოყოფილი რეგიონი ინიციალიზებულია ნულამდე. ის დაბეჭდავს შეტყობინებას Memory Allocated. თუ მეხსიერების განაწილება წარუმატებელია, ის დააბრუნებს null მაჩვენებელს. ამიტომ, ის დაბეჭდავს შეტყობინებას მეხსიერება არ არის გამოყოფილი.

რა არის მალოკი?

მალოკის ფუნქცია გამოიყენება მეხსიერებაში ბაიტების საჭირო რაოდენობის გამოსაყოფად. მალლოკის სინტაქსი ასეთია. ზომა წარმოადგენს საჭირო მეხსიერებას ბაიტებში.

void malloc(size_t_size);

ფუნქცია malloc აბრუნებს void მაჩვენებელს, ამიტომ cast ოპერატორი გამოიყენება მაჩვენებლის ტიპის დასაბრუნებლად საჭირო მონაცემთა ტიპის მიხედვით.

იხილეთ ქვემოთ მოცემული მარტივი C პროგრამა malloc ფუნქციით.

შეიცავს

შეიცავს

int main(){

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

if (ptr==NULL){

printf ("მეხსიერება არ არის გამოყოფილი");

}

სხვა{

printf("მეხსიერება გამოყოფილია");

}

დაბრუნება 0;

}

ზემოხსენებული პროგრამის მიხედვით, მეხსიერების ბლოკი გამოიყოფა. მაჩვენებელი მიუთითებს გამოყოფილი მეხსიერების საწყის მისამართზე. დაბრუნებული მაჩვენებელი გარდაიქმნება მთელ რიცხვად. თუ მეხსიერება გამოყოფილია, ის დაბეჭდავს შეტყობინებას მეხსიერების გამოყოფა. თუ მეხსიერება არ არის გამოყოფილი, დაბრუნდება null მაჩვენებელი. ამიტომ, მეხსიერება არ არის გამოყოფილი, შეტყობინება დაიბეჭდება.

რა მსგავსებაა calloc-სა და malloc-ს შორის?

  • ორივე ეს ფუნქცია დეკლარირებულია სათაურის ფაილში. ეს არის ბიბლიოთეკის სათაურის სტანდარტული ფაილი.
  • ორივე ფუნქცია გამოიყენება მეხსიერების დინამიური განაწილებისთვის.
  • caloc-ით და 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-ს შორის

გირჩევთ: