Skirtumas tarp kalloko ir malloko

Pagrindinis skirtumas - kallokas vs mallokas

Programuojant būtina saugoti duomenis. Duomenys saugomi atmintyje. Šios atminties vietos yra žinomos kaip kintamieji. Kiekvienas kintamasis turi tam tikrą tipą. Jie gali būti sveikieji skaičiai, slankioji reikšmė, dvigubi ženklai ir tt Taip pat yra duomenų struktūrų, kuriose galima laikyti fiksuoto dydžio nuoseklią to paties tipo elementų kolekciją. Tai masyvas. Programuotojas turi deklaruoti masyvo dydį. Jei programuotojas deklaruoja sveikų skaičių masyvą penkiems elementams, indekso reikšmės priskirti didesniam nei deklaruotas dydis neįmanoma. Atminties paskirstymas yra fiksuotas ir jo negalima pakeisti vykdymo metu. Kitas atminties paskirstymo būdas yra dinaminis atminties paskirstymas. Dinaminis atminties paskirstymas padeda skirti daugiau atminties, kai reikia, ir atlaisvinti, kai reikia. Antraštės failas turi keturias dinaminio atminties paskirstymo funkcijas. kallokas ir mallokas yra dvi tokios funkcijos. pagrindinis skirtumas tarp kalloko ir malloko yra tai „calloc“ paskirsto atmintį ir taip pat inicijuoja priskirtus atminties blokus iki nulio, tuo tarpu „malloc“ paskirsto atmintį, bet neinicijuoja tos, kuriai skirta atmintis iki nulio. Prieiga prie turinio kalloku duos nulį, bet malloc duos šiukšlių vertę.

TURINYS

1. Apžvalga ir svarbiausias skirtumas
2. Kas yra kallokas
3. Kas yra malloc
4. Kalloko ir malloko panašumai
5. Šalutinis palyginimas - lentelė „calloc“ ir „malloc“
6. Santrauka

Kas yra kallokas?

Atminties paskirstymas - tai procesas, kai vykdomosioms programoms priskiriama atmintis. Kartais reikia pakeisti atminties dydį. Todėl naudojamas dinaminis atminties paskirstymas. Tai daroma naudojant rodykles. Rodyklės yra atskaitos kintamieji, turintys kito kintamojo adresą.

01 paveikslas. Kallokas ir mallokas

calloc reiškia „gretimą paskirstymą“. Jis skiria kelis to paties dydžio atminties blokus. Kalloko sintaksė yra tokia. Reikia dviejų argumentų. Jie yra blokų skaičius ir kiekvieno bloko dydis. Funkcija „calloc“ grąžina tuščią rodyklę, todėl perdavimo operatorius yra naudojamas grąžinti rodyklės tipą pagal reikiamą duomenų tipą.

        void * calloc (dydis_tum, dydis_t dydis);

Žiūrėkite žemiau pateiktą paprastą C programą.

# įtraukti

# įtraukti

int pagrindinis ()

int ptr * = (int *) kallokas (20, dydisof (int));

if (ptr == NULL)

printf („Atmintis neskirta“);

Kitas

printf („Skirta atmintis“);

grįžti 0;

Pagal aukščiau pateiktą programą yra priskirtas gretimas atminties blokas, talpinantis 20 elementų. Kiekvienas iš jų bus sveikas skaičius. Naudojamas dydis (int), nes sveikojo skaičiaus tipas skiriasi priklausomai nuo kompiliatoriaus.

Jei atminties paskirstymas bus sėkmingas, grįš pagrindinis atminties bloko adresas. Tai reiškia, kad rodyklė ptr dabar nurodo pagrindinį tos atminties bloko adresą. Visi skirti regionai yra inicializuojami į nulius. Bus išspausdintas pranešimas „Atminties paskirstymas“. Jei atminties paskirstymas nesėkmingas, jis grąžins nulinį žymeklį. Todėl bus atspausdinta Atmintis nėra paskirta žinute.

Kas yra malloc?

„Malloc“ funkcija naudojama paskirstyti reikiamą baitų kiekį atmintyje. Malloc sintaksė yra tokia. Dydis nurodo reikiamą atmintį baitais.

        void * malloc (dydis_t_ dydis);

Funkcija malloc grąžina negaliojantį rodyklę, todėl perdavimo operatorius yra naudojamas grąžinti rodyklės tipą pagal reikiamą duomenų tipą.

Žiūrėkite žemiau pateiktą paprastą C programą su „malloc“ funkcija.

# įtraukti

# įtraukti

int pagrindinis ()

int ptr * = (int *) malloc (10 * dydisof (int));

if (ptr == NULL)

printf („Atmintis neskirta“);

Kitas

printf („Skirta atmintis“);

grįžti 0;

Pagal aukščiau pateiktą programą bus paskirta atminties dalis. Rodyklė nurodo paskirtos atminties pradinį adresą. Grąžintas žymeklis paverčiamas sveikojo skaičiaus tipu. Jei atmintis paskirta, ji atspausdins atminties paskirstymo pranešimą. Jei atmintis neskirta, grįš nulio žymeklis. Todėl atmintis nėra paskirta, pranešimas bus išspausdintas.

Kokie yra kalloko ir malloko panašumai?

  • Abi šios funkcijos yra deklaruotos antraštės faile. Tai yra standartinis bibliotekos antraštės failas.
  • Abi funkcijos naudojamos dinaminiam atminties paskirstymui.
  • Rodyklė, grąžinta kalloko ir malloko, turėtų būti įmesta į konkretų tipą.
  • Sėkmingai paskirstant atmintį, abi funkcijos grąžins žymiklį su pagrindiniu atminties bloko adresu.
  • Jei atminties paskirstymas nesėkmingas, bus grąžintas nulinis žymiklis.

Kuo skiriasi kallokas ir mallokas??

calloc vs malloc

„calloc“ - tai dinaminio atminties paskirstymo C kalbos antraštės faile stdlib.h funkcija, paskirstanti tam tikrą skaičių baitų ir inicijuojanti juos iki nulio. „malloc“ yra dinaminio atminties paskirstymo C kalbos stdlib.h antraštės faile funkcija, paskirstanti tam tikrą baitų skaičių.
 Reikšmė
calloc reiškia gretimą paskirstymą. „malloc“ reiškia atminties paskirstymą.
Sintaksė
calloc seka sintaksę, panašią į void * calloc (dydis_t_num, dydis_t dydis); malloc seka sintaksę, panašią į void * malloc (dydis_t_size);.
 Argumentų skaičius
calloc laikosi dviejų argumentų. Tai yra blokų skaičius ir kiekvieno bloko dydis. malloc laikosi vieno argumento. Tai yra baitų skaičius.
Greitis
kalokas trunka šiek tiek ilgiau nei mallokas. Taip yra dėl to, kad reikia papildomai padalinti atmintį nuliu. malloc yra greitesnis nei calloc.

Santrauka - calloc vs malloc

Pastovios atminties paskirstymo, pavyzdžiui, naudojant masyvus, atmintis yra fiksuota. Jei saugoma mažai elementų, likusi dalis atminties eikvojama. Tai taip pat gali sukelti klaidų, kai paskirta atmintis yra maža, nei reikia. Todėl naudojamas dinaminis atminties paskirstymas. C kalba, calloc ir malloc suteikia dinamišką atminties paskirstymą. Skirtumas tarp „kalloc“ ir „malloc“ yra tas, kad „calloc“ paskirsto atmintį ir taip pat inicijuoja paskirtus atminties blokus iki nulio, o „malloc“ paskirsto atmintį, bet neinicijuoja atminties blokų iki nulio. Malloc laikosi dviejų argumentų, o kalloc - dviejų argumentų.

Atsisiųskite „calloc vs malloc“ PDF failus

Galite atsisiųsti šio straipsnio PDF versiją ir naudoti ją neprisijungus, kaip nurodyta citatos pastaboje. Atsisiųskite PDF versiją čia: Skirtumas tarp kallo ir malloc

Nuoroda:

1.Kumaras, Krišanas. „Skirtumas tarp Malloc ir Calloc C.“ Cs-Fundamentals.com, Cs-Fundamentals.com. Galima rasti čia  
2. „C dinaminės atminties paskirstymas“. Vikipedija, „Wikimedia Foundation“, 2018 m. Sausio 13 d. Galima rasti čia 
3. „Calloc () prieš malloc ()“. „GeeksforGeeks“, 2017 m. Birželio 14 d. Galima rasti čia