Skillnad mellan calloc och malloc

Huvudskillnad - calloc vs malloc

Vid programmering är det nödvändigt att lagra data. Data lagras i minnet. Dessa minnesplatser är kända som variabler. Varje variabel har en viss typ. De kan vara heltal, flottörer, dubblar, tecken etc. Det finns också datastrukturer som kan lagra en fast-sekventiell samling av element av samma typ. Det är en matris. Programmeraren måste ange array-storleken. Om programmeraren förklarar en rad heltal för fem element, är det inte möjligt att tilldela ett värde till ett index som är högre än den angivna storleken. Minnesfördelningen är fast, och den kan inte ändras vid körning. Annan minnesallokeringsmetod är dynamisk minnesallokering. Dynamisk minnesallokering bidrar till att ge mer minne när det behövs och släppas vid behov. Headerfilen har fyra funktioner för dynamisk minnetilldelning. calloc och malloc är två sådana funktioner. De nyckelskillnad mellan calloc och malloc är det calloc allokerar minnet och initierar också de tilldelade minnesblocken till noll medan malloc allokerar minnet men initierar inte det tilldelade minnet till noll. Åtkomst till innehållet i calloc kommer att ge noll, men malloc kommer att ge ett skräpvärde.

INNEHÅLL

1. Översikt och nyckelskillnad
2. Vad är calloc
3. Vad är malloc
4. Likheter mellan calloc och malloc
5. Side vid sidajämförelse - calloc vs malloc i tabellform
6. Sammanfattning

Vad är calloc?

Minnesallokering är processen att tilldela minne för exekveringsprogrammen. Ibland är det nödvändigt att ändra minnesstorlek. Därför används dynamisk minnesallokering. Det görs med hjälp av pekare. Pekare är referensvariabler som innehåller adressen till en annan variabel.

Figur 01: Calloc och Malloc

calloc står för "angränsande tilldelning". Det tilldelar flera block av minne med samma storlek. Synakten för calloc är som följer. Det tar två argument. De är antalet block och storleken på varje block. Funktionssamtalet returnerar en tomrumsgivare, så en cast-operatör används för att returnera pekartypen enligt den obligatoriska datatypen.

        void * calloc (size_t num, size_t storlek);

Se nedan enkla C-programmet.

#inkludera

#inkludera

int main ()

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

om (ptr == NULL)

printf ("Minne är inte tilldelat");

annan

printf ("Minne är allokerat");

returnera 0;

Enligt ovanstående program tilldelas ett angränsande minnesblock som kan inneha 20 element. Varje kommer att ha storleken på ett heltal. Storleken på (int) används eftersom heltalstypen varierar från kompilator till kompilator.

Om minnesallokeringen är framgångsrik kommer den att returnera basadressen till minnesblocket. Det betyder att pekaren ptr pekar nu på basadressen till det här minnesblocket. Alla tilldelade regioner initialiseras till nollor. Det kommer att skriva ut meddelandet Memory Allocated. Om minnesallokeringen misslyckas, returnerar den nollpunkten. Därför kommer det att skrivas ut Minne är inte tilldelat meddelande.

Vad är malloc?

Malloc-funktionen används för att allokera önskad mängd bitgrupper i minnet. Syntaxen för malloc är som följer. Storleken representerar det önskade minnet i byte.

        void * malloc (size_t_size);

Funktionsmalloc returnerar en tomrumsindikator, så en cast-operatör används för att returnera pekartypen enligt den obligatoriska datatypen.

Se nedan enkla C-programmet med malloc-funktionen.

#inkludera

#inkludera

int main ()

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

om (ptr == NULL)

printf ("Minne är inte tilldelat");

annan

printf ("Minne är allokerat");

returnera 0;

Enligt ovanstående program kommer minnesblock att tilldelas. Pekaren pekar på startadressen för det tilldelade minnet. Den returnerade pekaren konverteras till en heltalstyp. Om minnet är allokerat kommer det att skrivas minne tilldelas meddelande. Om minnet inte är tilldelat kommer en nollpekare att återvända. Därför är inte minnet tilldelat meddelandet kommer att skrivas ut.

Vad är likheterna mellan calloc och malloc?

  • Båda dessa funktioner förklaras i huvudfilen. Det är standardbibliotekshuvudfilen.
  • Båda funktionerna används för dynamisk minnesallokering.
  • Pekaren som returneras av calloc och malloc bör gjutas i den specifika typen.
  • Vid lyckad minnetilldelning kommer båda funktionerna att returnera en pekare med basadressen till minnesblocket.
  • Om minnesallokeringen misslyckas, returneras en nollpekare.

Vad är skillnaden mellan calloc och malloc?

calloc vs malloc

calloc är en funktion för dynamisk minnetilldelning i C-språk stdlib.h header-fil som allokerar ett visst antal byte och initierar dem till noll. malloc är en funktion för dynamisk minnetilldelning i C-språk stdlib.h header-fil som allokerar ett visst antal byte.
 Menande
calloc står för angränsande tilldelning. malloc står för minnesallokering.
Syntax
calloc följer en syntax som liknar void * calloc (size_t_num, size_t storlek); malloc följer en syntax som liknar void * malloc (size_t_size);.
 Antal argument
calloc tar två argument. De är ett antal block och storlek på varje block. malloc tar ett argument. Det är ett antal byte.
Fart
calloc tar lite längre tid än malloc. Det beror på det extra steget att initiera det tilldelade minnet med noll. malloc är snabbare än calloc.

Sammanfattning - Calloc vs Malloc

I statisk minnesallokering, så att vi använder arrays, är minnet fixerat. Om få element lagras, är resten av minnet bortkastat. Det kan också orsaka fel när det tilldelade minnet är litet än det önskade minnet. Därför används dynamisk minnesallokering. I C-språk ger calloc och malloc dynamisk minnesallokering. Skillnaden mellan calloc och malloc är att callok allokerar minne och initierar också de tilldelade minnesblocken till noll medan malloc allokerar minnet men initierar inte minnesblock till noll. Malloc tar två argument medan calloc tar två argument.

Ladda ner PDF av calloc vs malloc

Du kan ladda ner PDF-versionen av den här artikeln och använda den för offline-ändamål enligt citationsnotat. Vänligen ladda ner PDF-versionen här: Skillnad mellan calloc och malloc

Referens:

1.Kumar, Krishan. "Skillnad mellan Malloc och Calloc i C." Cs-Fundamentals.com, Cs-Fundamentals.com. Tillgänglig här  
2. "C dynamisk minnesallokering." Wikipedia, Wikimedia Foundation, 13 jan 2018. Tillgänglig här 
3. "Calloc () mot malloc ()." GeeksforGeeks, 14 juni 2017. Tillgänglig här