Atšķirība starp kalloku un malloku

Galvenā atšķirība - calloc vs malloc

Plānojot, ir nepieciešams saglabāt datus. Dati tiek glabāti atmiņā. Šīs atmiņas vietas sauc par mainīgajiem. Katram mainīgajam ir noteikts tips. Tie var būt veseli skaitļi, pludiņi, dubultzīmes, rakstzīmes utt. Ir arī datu struktūras, kas var saglabāt fiksēta lieluma secīgu viena veida elementu kolekciju. Tas ir masīvs. Programmētājam ir jādeklarē masīva lielums. Ja programmētājs deklarē veselu skaitļu masīvu pieciem elementiem, indeksam nav iespējams piešķirt vērtību, kas ir augstāka par deklarēto lielumu. Atmiņas iedalījums ir fiksēts, un to nevar mainīt izpildes laikā. Cita atmiņas piešķiršanas metode ir dinamiskā atmiņas piešķiršana. Dinamiska atmiņas sadale palīdz pēc vajadzības atdalīt vairāk atmiņas un vajadzības gadījumā atbrīvot. Galvenes failam ir četras funkcijas dinamiskai atmiņas sadalei. kalloks un malloks ir divas šādas funkcijas. galvenā atšķirība starp kalloku un malloku ir tas, ka calloc piešķir atmiņu un arī inicializē piešķirtos atmiņas blokus līdz nullei, turpretim malloc piešķir atmiņu, bet neinicializē šo atvēlēto atmiņu līdz nullei. Piekļuve saturam kallokā dos nulli, bet malloc piešķirs atkritumu vērtību.

SATURS

1. Pārskats un galvenās atšķirības
2. Kas ir kalloks
3. Kas ir malloc?
4. Līdzības starp kalloku un malloku
5. Salīdzinājums blakus - calloc vs malloc tabulas formā
6. Kopsavilkums

Kas ir kalloks?

Atmiņas piešķiršana ir process, kurā atmiņai piešķir izpildes programmas. Dažreiz ir jāmaina atmiņas lielums. Tādēļ tiek izmantota dinamiskā atmiņas sadale. Tas tiek veikts, izmantojot norādes. Norādes ir atsauces mainīgie, kas satur cita mainīgā adresi.

01. attēls: kalloks un malloks

kalloks nozīmē “blakus esošo sadali”. Tas piešķir vairākus atmiņas blokus ar vienādu izmēru. Kalloka sintakse ir šāda. Tam nepieciešami divi argumenti. Tie ir bloku skaits un katra bloka lielums. Funkcija calloc atgriež tukšo rādītāju, tāpēc lietais operators tiek izmantots, lai atgrieztu rādītāja tipu atbilstoši nepieciešamajam datu tipam.

        void * calloc (lielums_num, izmērs_t lielums);

Skatiet zemāk redzamo vienkāršo C programmu.

# iekļaut

# iekļaut

int galvenā ()

int ptr * = (int *) kalloks (20, izmērs (int));

if (ptr == NULL)

printf (“Atmiņa netiek piešķirta”);

cits

printf (“Atmiņa tiek piešķirta”);

atgriešanās 0;

Saskaņā ar iepriekšminēto programmu tiek piešķirts blakus esošais atmiņas bloks, kurā var ietilpt 20 elementi. Katram būs vesels skaitlis. Tiek izmantots lielums int (int), jo vesela skaitļa tips katram kompilatoram atšķiras.

Ja atmiņas piešķiršana ir veiksmīga, tā atgriezīs atmiņas bloka bāzes adresi. Tas nozīmē, ka rādītājs ptr tagad norāda uz šī atmiņas bloka bāzes adresi. Visi piešķirtie reģioni tiek inicializēti ar nullēm. Tas izdrukās atmiņai piešķirto ziņojumu. Ja atmiņas piešķiršana nav veiksmīga, tas atgriezīs nulles rādītāju. Tāpēc tas izdrukās Atmiņa netiek piešķirta.

Kas ir malloc?

Malloc funkcija tiek izmantota, lai atmiņā piešķirtu nepieciešamo baitu daudzumu. Malloc sintakse ir šāda. Izmērs norāda nepieciešamo atmiņu baitos.

        void * malloc (lielums_t_izmērs);

Funkcija malloc atgriež tukšo rādītāju, tāpēc cast operators tiek izmantots, lai atgrieztu rādītāja tipu atbilstoši nepieciešamajam datu tipam.

Skatiet zemāk redzamo vienkāršo C programmu ar malloc funkciju.

# iekļaut

# iekļaut

int galvenā ()

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

if (ptr == NULL)

printf (“Atmiņa netiek piešķirta”);

cits

printf (“Atmiņa tiek piešķirta”);

atgriešanās 0;

Saskaņā ar iepriekšminēto programmu tiks piešķirts atmiņas bloks. Rādītājs norāda uz piešķirtās atmiņas sākuma adresi. Atgrieztais rādītājs tiek pārveidots par veselu skaitli. Ja atmiņa tiek piešķirta, tā drukās atmiņai piešķirto ziņojumu. Ja atmiņa netiek piešķirta, atgriezīsies nulles rādītājs. Tāpēc atmiņai nav piešķirta ziņa tiks izdrukāta.

Kādas ir līdzības starp kalloku un malloku??

  • Abas šīs funkcijas tiek deklarētas galvenes failā. Tas ir standarta bibliotēkas galvenes fails.
  • Abas funkcijas tiek izmantotas dinamiskai atmiņas sadalei.
  • Rādītājs, kuru atdod ar kalloku un malloku, ir jāietver konkrētajā tipā.
  • Veiksmīgā atmiņas iedalījumā abas funkcijas atgriezīs rādītāju ar atmiņas bloka bāzes adresi.
  • Ja atmiņas piešķiršana nav veiksmīga, tiek atgriezts nulles rādītājs.

Kāda ir atšķirība starp kalloku un malloku?

calloc vs malloc

calloc ir dinamiskas atmiņas piešķiršanas funkcija C valodas stdlib.h galvenes failā, kas piešķir noteiktu baitu skaitu un inicializē tos līdz nullei. malloc ir funkcija dinamiskai atmiņas piešķiršanai C valodas stdlib.h galvenes failā, kas piešķir noteiktu baitu skaitu.
 Nozīme
kalloks nozīmē blakus esošo sadalījumu. malloc apzīmē atmiņas piešķiršanu.
Sintakse
kalloks seko sintaksei, kas līdzīga void * calloc (lielums_t_num, lielums_t lielums); malloc seko sintaksei, kas līdzīga void * malloc (lielums_t_izmērs);.
 Argumentu skaits
kallokam ir divi argumenti. Tie ir bloku skaits un katra bloka lielums. malloc ņem vienu argumentu. Tas ir vairāki baiti.
Ātrums
kalloks prasa nedaudz vairāk laika nekā malloc. Tas ir tāpēc, ka papildu solis ir inicializēt piešķirto atmiņu ar nulli. malloc ir ātrāks nekā calloc.

Kopsavilkums - calloc vs malloc

Statiskā atmiņas sadalījumā, piemēram, izmantojot masīvus, atmiņa ir fiksēta. Ja tiek saglabāti maz elementu, pārējā atmiņa tiek izšķiesta. Tas var izraisīt kļūdas arī tad, ja atvēlētā atmiņa ir maza nekā nepieciešamā atmiņa. Tādēļ tiek izmantota dinamiskā atmiņas sadale. C valodā kalloks un malloks nodrošina dinamisku atmiņas sadalījumu. Atšķirība starp calloc un malloc ir tāda, ka calloc piešķir atmiņu un arī inicializē piešķirtos atmiņas blokus uz nulli, kamēr malloc piešķir atmiņu, bet neinicializē atmiņas blokus uz nulli. Malloks ņem divus argumentus, bet kalloks - divus argumentus.

Lejupielādējiet kalloc vs malloc PDF failus

Varat lejupielādēt šī raksta PDF versiju un izmantot to bezsaistes vajadzībām, kā norādīts citēšanas piezīmē. Lūdzu, lejupielādējiet PDF versiju šeit: Atšķirība starp kalloku un malloku

Atsauce:

1.Kumars, Krišjānis. “Atšķirība starp Malloc un Calloc C. Cs-Fundamentals.com, Cs-Fundamentals.com. Pieejams šeit  
2. “C dinamiskās atmiņas piešķiršana.” Wikipedia, Wikimedia Foundation, 2018. gada 13. janvārī. Pieejams šeit 
3. “Calloc () pret malloc ()”. GeeksforGeeks, 2017. gada 14. jūnijs. Pieejams šeit