A legfontosabb különbség: a "Calloc" és a "Malloc" a dinamikus memóriaelosztás teljesítményét jelenti a C programozási nyelven. A 'calloc' inicializálja a hozzárendelt memóriát nullával, míg a 'malloc' nem.
Mind a 'calloc', mind a 'malloc' szabványkönyvtárfunkciók.
Szintaxisa a következő:
void * calloc (number_of_blocks, size_of_each_block_in_bytes);
Itt a „void” egy általános C-függvény, amely nem ad vissza semmilyen értéket. Az első argumentumban lévő elemek száma meghatározza az egyik elem bájtméretét a második argumentumhoz. A cím a sikeres partíció után kerül visszaadásra, különben a függvény minden meghibásodása esetén visszatér a NULL.
Szintaxisa a következő:
void * malloc (size_in_bytes);
Pontosabban, a cím egy általános módon tér vissza (void *). Ha a „malloc” nem tudja kiosztani a memóriát, akkor a -1-et adja vissza, különben visszaadja azt a címet, ahonnan a memóriát kiosztják. A hozzárendelt memória egész szám formájában lehet, az űrlapot int * néven; a kiosztott memória egy úszó formában is lehet, csak úgy, hogy ugyanolyan üres címet ad meg, mint az úszó *.
Calloc és Malloc összehasonlítása:
calloc | malloc | |
Alapfunkciók | A könyvtári funkció a memória egy régióját hozza létre, amely elég nagy ahhoz, hogy mindegyik „méret” bájt „n elemét” tartsa. | A könyvtári funkció csak a memória méretét adja meg. |
inicializálás | A memória tartalmát nullára inicializálja. | Nem inicializálja a memória tartalmát nullára. |
Az érvek száma | Itt két érv van. | Itt csak egy érv van. |
Kiosztott értékek | A kijelölt terület nullára van inicializálva. | A kiosztott memória tartalma nem változik, azaz a memória kiszámíthatatlan vagy szemétértéket tartalmaz, ami kockázatot jelent. |
Értéket ad vissza | érvénytelen mutató (void *). Sikeres kiosztás után a memória blokkjára mutató mutatót küldünk vissza. | érvénytelen mutató (void *). Sikeres kiosztás után a memória blokkjára mutató mutatót küldünk vissza. |