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.
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
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.
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.
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. |
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.
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
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