Galvenā atšķirība: “Calloc” un “Malloc” attiecas uz dinamiskās atmiņas piešķiršanu C programmēšanas valodā. “Calloc” inicializē piešķirto atmiņu ar nulli, savukārt “malloc” nav.
Gan "calloc", gan "malloc" ir standarta bibliotēkas funkcijas.
Tās sintakse ir šāda:
void * calloc (skaits_of_bloki, izmērs_of_each_block_in_bytes);
Šeit "tukšums" ir vispārēja C funkcija, kas neatgriež nekādu vērtību. Elementu skaits pirmajā argumentā nosaka viena elementa lielumu baitos otrajam argumentam. Adrese tiek atgriezta pēc veiksmīgas nodalīšanas, pretējā gadījumā tiek atdota NULL, ja funkcija tiek bojāta.
Tās sintakse ir šāda:
void * malloc (size_in_bytes);
Konkrēti, tā atgriež adresi vispārīgā veidā (anulēta *). Ja “malloc” nespēj piešķirt atmiņu, tas atgriež -1, pretējā gadījumā tas atgriež adresi, no kuras tiek piešķirta atmiņa. Piešķirtā atmiņa var būt vesels skaitlis, veidam, kas izsaka tukšo adresi kā int *; piešķirtā atmiņa var būt arī pludiņa formā, tikai pēc tipa, kas atdala tādu pašu tukšo adresi kā peldošs *.
Calloc un Malloc salīdzinājums:
Calloc | Malloc | |
Pamatfunkcijas | Bibliotēkas funkcija piešķir atmiņas atmiņu, kas ir pietiekami liela, lai turētu “lieluma” baitu “n elementus” katrā. | Bibliotēkas funkcija piešķir tikai atmiņas lieluma baitus. |
Inicializācija | Tā inicializē atmiņas saturu uz nulli. | Tā nesāk inicializēt atmiņas saturu uz nulli. |
Argumentu skaits | Šeit ir divi argumenti. | Šeit ir tikai viens arguments. |
Piešķirtās vērtības | Piešķirtais reģions tiek inicializēts uz nulli. | Piešķirtās atmiņas saturs netiek mainīts, tas ir, atmiņā ir neparedzamas vai atkritumu vērtības, kas rada risku. |
Atgriež vērtību | nederīgs rādītājs (anulēts *). Pēc veiksmīgas piešķiršanas tiek atgriezts rādītājs uz atmiņas bloku. | nederīgs rādītājs (anulēts *). Pēc veiksmīgas piešķiršanas tiek atgriezts rādītājs uz atmiņas bloku. |