Calloci ja malloci erinevus

Sisukord:

Calloci ja malloci erinevus
Calloci ja malloci erinevus

Video: Calloci ja malloci erinevus

Video: Calloci ja malloci erinevus
Video: Самоделка покорившая интернет! ЗНАЛ БЫ РАНЬШЕ - СДЕЛАЛ СРАЗУ! 2024, November
Anonim

Peamine erinevus – calloc vs malloc

Programmeerimisel on vaja andmeid salvestada. Andmed salvestatakse mällu. Neid mälukohti nimetatakse muutujateks. Igal muutujal on teatud tüüp. Need võivad olla täisarvud, ujukid, topeltarvud, märgid jne. On ka andmestruktuure, mis võivad salvestada sama tüüpi elementide fikseeritud suurusega järjestikust kogumit. See on massiiv. Programmeerija peab deklareerima massiivi suuruse. Kui programmeerija deklareerib viie elemendi täisarvude massiivi, ei ole deklareeritud suurusest suuremale indeksile võimalik väärtust määrata. Mälu eraldamine on fikseeritud ja seda ei saa tööajal muuta. Teine mälu eraldamise meetod on dünaamiline mälu eraldamine. Dünaamiline mälujaotus aitab vajadusel rohkem mälu eraldada ja vajadusel vabastada. Päisefailil on dünaamilise mälu eraldamiseks neli funktsiooni. calloc ja malloc on kaks sellist funktsiooni. Peamine erinevus calloci ja malloci vahel on see, et calloc eraldab mälu ja lähtestab eraldatud mäluplokid nullini, malloc aga eraldab mälu, kuid ei lähtesta seda eraldatud mälu nulliks. Calloci sisule juurdepääs annab nulli, kuid malloc annab prügiväärtuse.

Mis on calloc?

Mälu eraldamine on käivitatavate programmide jaoks mälu määramise protsess. Mõnikord on vaja mälu suurust muuta. Seetõttu kasutatakse dünaamilist mälujaotust. Seda tehakse osutite abil. Osutajad on võrdlusmuutujad, mis sisaldavad teise muutuja aadressi.

Erinevus calloci ja malloci vahel
Erinevus calloci ja malloci vahel

Joonis 01: calloc ja malloc

calloc tähistab "külgnevat jaotust". See eraldab mitu sama suurusega mäluplokki. Calloci süntaks on järgmine. Selleks on vaja kahte argumenti. Need on plokkide arv ja iga ploki suurus. Funktsioon calloc tagastab tühise osuti, seega kasutatakse cast-operaatorit osuti tüübi tagastamiseks vastav alt nõutavale andmetüübile.

voidcalloc(size_t num, size_t size);

Vaadake allolevat lihtsat C-programmi.

kaasa

kaasa

int main(){

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

if (ptr==NULL){

printf(“Mälu pole eraldatud”);

}

muu{

printf(“Mälu on eraldatud”);

}

tagasi 0;

}

Vastav alt ül altoodud programmile eraldatakse külgnev mäluplokk, mis mahutab 20 elementi. Igaühe suurus on täisarv. Suurust(int) kasutatakse, kuna täisarvu tüüp on kompilaatoriti erinev.

Kui mälu eraldamine õnnestub, tagastab see mäluploki baasaadressi. See tähendab, et osuti ptr osutab nüüd selle mäluploki baasaadressile. Kõik eraldatud piirkonnad lähtestatakse nullidega. See prindib teate Mälu eraldatud. Kui mälu eraldamine ebaõnnestub, tagastab see nullkursori. Seetõttu prindib see teate Mälu pole eraldatud.

Mis on malloc?

Malloc funktsiooni kasutatakse vajaliku hulga baitide eraldamiseks mällu. Malloci süntaks on järgmine. Suurus tähistab vajalikku mälu baitides.

void malloc(size_t_size);

Funktsioon malloc tagastab tühise osuti, nii et vastav alt nõutavale andmetüübile kasutatakse osutitüübi tagastamiseks cast-operaatorit.

Vaadake allolevat lihtsat C-programmi malloc funktsiooniga.

kaasa

kaasa

int main(){

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

if (ptr==NULL){

printf(“Mälu pole eraldatud”);

}

muu{

printf(“Mälu on eraldatud”);

}

tagasi 0;

}

Vastav alt ül altoodud programmile eraldatakse mäluplokk. Kursor osutab eraldatud mälu algusaadressile. Tagastatud kursor teisendatakse täisarvu tüübiks. Kui mälu on eraldatud, prinditakse mälu eraldatud teade. Kui mälu ei eraldata, naaseb nullkursor. Seega, mälu pole eraldatud, prinditakse teade.

Millised on calloci ja malloci sarnasused?

  • Mõlemad need funktsioonid on deklareeritud päisefailis. See on standardne teegi päisefail.
  • Mõlemat funktsiooni kasutatakse dünaamilise mälu jaotamiseks.
  • Calloci ja malloci tagastatud kursor tuleks suunata konkreetsesse tüüpi.
  • Eduka mälujaotuse korral tagastavad mõlemad funktsioonid kursori mäluploki baasaadressiga.
  • Kui mälu eraldamine ebaõnnestub, tagastatakse nullkursor.

Mis vahe on callocil ja mallocil?

calloc vs malloc

calloc on dünaamilise mälu jaotamise funktsioon C-keeles stdlib.h päisefailis, mis eraldab kindla arvu baite ja lähtestab need nulliks. malloc on dünaamilise mälu jaotamise funktsioon C-keeles stdlib.h päisefailis, mis eraldab kindla arvu baite.
Tähendus
calloc tähistab külgnevat jaotust. malloc tähistab mälu eraldamist.
Süntaks
calloc järgib süntaksit, mis sarnaneb väärtusega void calloc(size_t_num, size_t size); malloc järgib süntaksit, mis sarnaneb väärtusega void malloc(size_t_size);.
Argumentide arv
calloc võtab kaks argumenti. Need on plokkide arv ja iga ploki suurus. malloc võtab ühe argumendi. See on baitide arv.
Kiirus
calloc võtab veidi kauem aega kui malloc. Selle põhjuseks on lisaetapp eraldatud mälu nulliga lähtestamiseks. malloc on kiirem kui calloc.

Kokkuvõte – calloc vs malloc

Staatilise mälu jaotamise korral, näiteks massiive kasutades, on mälu fikseeritud. Kui salvestatakse vähe elemente, läheb ülejäänud mälu raisku. See võib põhjustada tõrkeid ka siis, kui eraldatud mälu on nõutavast väiksem. Seetõttu kasutatakse dünaamilist mälujaotust. C-keeles pakuvad calloc ja malloc dünaamilist mälu eraldamist. Calloci ja malloci erinevus seisneb selles, et calloc eraldab mälu ja lähtestab eraldatud mäluplokid nullini, malloc eraldab mälu, kuid ei lähtesta mäluplokke nulli. Malloc kasutab kaks argumenti, calloc aga kaks argumenti.

Laadige alla Calloc vs malloc PDF

Saate alla laadida selle artikli PDF-versiooni ja kasutada seda võrguühenduseta kasutamiseks vastav alt tsitaadi märkusele. Laadige PDF-versioon alla siit: Calloci ja malloci erinevus

Soovitan: