Keskeinen ero: 'Calloc' ja 'Malloc' viittaavat dynaamisen muistin allokointiin C-ohjelmointikielellä. 'Calloc' aloittaa varatun muistin nollalla, kun taas 'malloc' ei.
Sekä 'calloc' että 'malloc' ovat standardeja kirjastotoimintoja.
Sen syntaksi on seuraava:
void * calloc (number_of_blocks, size_of_each_block_in_bytes);
Tässä "tyhjä" on yleinen C-toiminto, joka ei palauta mitään arvoa. Ensimmäisessä argumentissa olevien elementtien lukumäärä määrittää yhden elementin tavuina toisen argumentin. Osoite palautetaan onnistuneen osioinnin jälkeen, muuten palautetaan toiminto NULL millä tahansa toimintahäiriöllä.
Sen syntaksi on seuraava:
void * malloc (size_in_bytes);
Tarkemmin sanottuna se palauttaa osoitteen yleisellä tavalla (void *). Jos malloc ei pysty varaamaan muistia, se palauttaa -1, muuten se palauttaa osoitteen, josta muisti on allokoitu. Allokoitu muisti voi olla kokonaisluvun muodossa tyyppiä, joka antaa tyhjän osoitteen int *: ksi; varattu muisti voi olla myös kellukkeen muodossa, vain tyypillä, jolla on sama tyhjä osoite kuin kelluvalla *.
Callocin ja Mallocin vertailu:
calloc | malloc | |
Perustoiminnot | Kirjastotoiminto allokoi muistin alueen, joka on riittävän suuri pitämään "koko"-tavujen "n-elementtejä". | Kirjastotoiminto allokoi vain muistin ”koko” tavua. |
alustus | Se alustaa muistin sisällön nollaan. | Se ei alustaa muistin sisältöä nollaksi. |
Väitteiden lukumäärä | Tässä on kaksi argumenttia. | Tässä on vain yksi argumentti. |
Määritetyt arvot | Allokoitu alue alustetaan nollaan. | Määritetyn muistin sisältöä ei muuteta, toisin sanoen muisti sisältää arvaamattomia tai roska-arvoja, mikä luo riskin. |
Palauttaa arvon | void pointer (void *). Onnistuneen allokoinnin jälkeen palautetaan osoitin muistilohkoon. | void pointer (void *). Onnistuneen allokoinnin jälkeen palautetaan osoitin muistilohkoon. |