Atšķirība starp calloc un malloc

Satura rādītājs:

Atšķirība starp calloc un malloc
Atšķirība starp calloc un malloc

Video: Atšķirība starp calloc un malloc

Video: Atšķirība starp calloc un malloc
Video: difference between constant and variable | constant and variable 2024, Novembris
Anonim

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

Programmēšanā ir nepieciešams saglabāt datus. Dati tiek saglabāti atmiņā. Šīs atmiņas vietas ir zināmas kā mainīgie. Katram mainīgajam ir noteikts veids. Tie var būt veseli skaitļi, pludiņi, dubultskaitļi, rakstzīmes utt. Ir arī datu struktūras, kas var uzglabāt fiksēta izmēra 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, kas ir lielāks par deklarēto lielumu, nav iespējams piešķirt vērtību. Atmiņas sadalī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. Dinamiskā atmiņas piešķiršana palīdz piešķirt vairāk atmiņas, kad nepieciešams, un atbrīvot, kad nepieciešams. Galvenes failam ir četras funkcijas dinamiskai atmiņas piešķiršanai. calloc un malloc ir divas šādas funkcijas. Galvenā 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, turpretī malloc piešķir atmiņu, bet neinicializē piešķirto atmiņu uz nulli. Piekļūstot saturam programmā calloc, tiks iegūta nulle, bet malloc – atkrituma vērtība.

Kas ir calloc?

Atmiņas piešķiršana ir atmiņas piešķiršanas process izpildprogrammām. Dažreiz ir nepieciešams mainīt atmiņas lielumu. Tāpēc tiek izmantota dinamiskā atmiņas piešķiršana. Tas tiek darīts, izmantojot norādes. Rādītāji ir atsauces mainīgie, kas satur cita mainīgā adresi.

Atšķirība starp calloc un malloc
Atšķirība starp calloc un malloc

Attēls 01: calloc un malloc

calloc apzīmē “blakus piešķīrums”. Tas piešķir vairākus tāda paša izmēra atmiņas blokus. Calloc sintakse ir šāda. Tam nepieciešami divi argumenti. Tie ir bloku skaits un katra bloka izmērs. Funkcija calloc atgriež tukšu rādītāju, tāpēc tiek izmantots cast operators, lai atgrieztu rādītāja veidu atbilstoši nepieciešamajam datu tipam.

voidcalloc(size_t num, size_t size);

Skatiet tālāk minēto vienkāršo C programmu.

iekļauts

iekļauts

int main(){

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

if (ptr==NULL){

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

}

cits{

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

}

atgriezties 0;

}

Saskaņā ar iepriekš minēto programmu tiek piešķirts blakus esošais atmiņas bloks, kurā var būt 20 elementi. Katram no tiem būs vesela skaitļa lielums. Lielums(int) tiek izmantots, jo vesela skaitļa veids atšķiras atkarībā no kompilatora.

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 līdz nullēm. Tas izdrukās ziņojumu par piešķirto atmiņu. Ja atmiņas piešķiršana ir neveiksmīga, tas atgriezīs nulles rādītāju. Tāpēc tiks izdrukāts ziņojums Atmiņa nav piešķirta.

Kas ir malloc?

Funkcija malloc tiek izmantota, lai atmiņā piešķirtu vajadzīgo baitu daudzumu. Malloc sintakse ir šāda. Lielums apzīmē nepieciešamo atmiņu baitos.

void malloc(size_t_size);

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

Skatiet tālāk sniegto vienkāršo C programmu ar malloc funkciju.

iekļauts

iekļauts

int main(){

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

if (ptr==NULL){

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

}

cits{

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

}

atgriezties 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 vesela skaitļa tipu. Ja atmiņa ir piešķirta, tiks izdrukāts ziņojums par atmiņu ir piešķirts. Ja atmiņa nav piešķirta, atgriezīsies nulles rādītājs. Tāpēc atmiņa nav piešķirta, tiks izdrukāts ziņojums.

Kādas ir līdzības starp calloc un malloc?

  • Abas šīs funkcijas ir deklarētas galvenes failā. Tas ir standarta bibliotēkas galvenes fails.
  • Abas funkcijas tiek izmantotas dinamiskai atmiņas piešķiršanai.
  • Rādītājs, ko atgrieza calloc un malloc, ir jāievieto konkrētajā veidā.
  • Veiksmīgas atmiņas piešķiršanas gadījumā abas funkcijas atgriezīs rādītāju ar atmiņas bloka bāzes adresi.
  • Ja atmiņas piešķiršana ir neveiksmīga, tiks atgriezts nulles rādītājs.

Kāda ir atšķirība starp calloc un malloc?

calloc vs malloc

calloc ir funkcija dinamiskai atmiņas piešķiršanai 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
calloc apzīmē blakus esošo sadalījumu. malloc apzīmē atmiņas piešķiršanu.
Sintakse
calloc ievēro sintakse, kas līdzīga vārdam void calloc(size_t_num, size_t size); malloc ievēro sintakse, kas līdzīga vārdam void malloc(size_t_size);.
Argumentu skaits
calloc izmanto divus argumentus. Tie ir bloku skaits un katra bloka lielums. malloc izmanto vienu argumentu. Tas ir baitu skaits.
Ātrums
calloc aizņem nedaudz vairāk laika nekā malloc. Tas ir tāpēc, ka tiek veikts papildu solis, kas inicializē piešķirto atmiņu par nulli. malloc ir ātrāks par calloc.

Kopsavilkums - calloc pret malloc

Statiskajā atmiņas piešķiršanā, piemēram, izmantojot masīvus, atmiņa ir fiksēta. Ja tiek saglabāti daži elementi, pārējā atmiņa tiek izniekota. Tas var izraisīt kļūdas arī tad, ja piešķirtā atmiņa ir mazāka par nepieciešamo atmiņu. Tāpēc tiek izmantota dinamiskā atmiņas piešķiršana. C valodā calloc un malloc nodrošina dinamisku atmiņas piešķiršanu. Atšķirība starp calloc un malloc ir tāda, ka calloc piešķir atmiņu un arī inicializē piešķirtos atmiņas blokus līdz nullei, savukārt malloc piešķir atmiņu, bet neinicializē atmiņas blokus līdz nullei. Malloc izmanto divus argumentus, bet calloc izmanto divus argumentus.

Lejupielādēt PDF failu calloc vs malloc

Varat lejupielādēt šī raksta PDF versiju un izmantot to bezsaistē saskaņā ar atsauces piezīmi. Lūdzu, lejupielādējiet PDF versiju šeit: Atšķirība starp calloc un malloc

Ieteicams: