Forskellen mellem calloc og malloc

Nøgleforskel - calloc vs malloc

Ved programmering er det nødvendigt at gemme data. Data gemmes i hukommelsen. Disse hukommelsesplaceringer er kendt som variabler. Hver variabel har en bestemt type. De kan være heltal, flyder, fordoblinger, tegn osv. Der er også datastrukturer, der kan gemme en sekventiel samling af faste størrelser af elementer af samme type. Det er en matrix. Programmereren skal erklære arraystørrelsen. Hvis programmereren annullerer en række heltal for fem elementer, er det ikke muligt at tildele en værdi til et indeks, der er højere end den deklarerede størrelse. Hukommelsesallokering er fast, og den kan ikke ændres på kørselstidspunktet. Anden hukommelsesallokeringsmetode er dynamisk hukommelsesallokering. Dynamisk hukommelsesallokering hjælper med at allokere mere hukommelse når det er nødvendigt og frigør om nødvendigt. Hovedfilen har fire funktioner til dynamisk hukommelsesallokering. calloc og malloc er to sådanne funktioner. Det vigtigste forskel mellem calloc og malloc er det calloc tildeler hukommelsen og initialiserer også de tildelte hukommelsesblokke til nul, mens malloc tildeler hukommelsen, men initialiserer ikke den tildelte hukommelse til nul. Adgang til indholdet i calloc giver nul, men malloc giver en affaldsværdi.

INDHOLD

1. Oversigt og nøgleforskel
2. Hvad er calloc
3. Hvad er malloc
4. Ligheder mellem calloc og malloc
5. Sammenligning side ved side - calloc vs malloc i tabelform
6. Resume

Hvad er calloc?

Hukommelsesallokering er processen med at tildele hukommelse til de eksekverende programmer. Nogle gange er det nødvendigt at ændre hukommelsestørrelsen. Derfor bruges dynamisk hukommelsesallokering. Det gøres ved hjælp af pegepunkter. Pegere er referencevariabler, der har adressen på en anden variabel.

Figur 01: calloc og malloc

calloc står for ”sammenhængende allokering”. Det tildeler flere hukommelsesblokke med samme størrelse. Syntaks for calloc er som følger. Det kræver to argumenter. De er antallet af blokke og størrelsen på hver blok. Funktion calloc returnerer en ugyldig markør, så en cast-operatør bruges til at returnere pointer-type i henhold til den krævede datatype.

        tomrum * calloc (størrelse_t num, størrelse_t størrelse);

Se det nedenstående enkle C-program.

#omfatte

#omfatte

int main ()

int ptr * = (int *) calloc (20, størrelse af (int));

if (ptr == NULL)

printf (“Hukommelse er ikke tildelt”);

andet

printf ("Hukommelse er tildelt");

retur 0;

I henhold til ovenstående program tildeles en sammenhængende hukommelsesblok, der kan indeholde 20 elementer. Hver har størrelsen på et heltal. Størrelsenof (int) bruges, fordi heltalstypen varierer fra kompilator til kompilator.

Hvis hukommelsestildelingen er vellykket, returnerer den hukommelsesblokkens basisadresse. Det betyder, at pointer ptr nu peger på baseadressen til den hukommelsesblok. Alle tildelte regioner initialiseres til nuller. Det udskriver hukommelsesallokeret meddelelse. Hvis hukommelsestildelingen ikke lykkes, returnerer den nulpinderen. Derfor udskriver den Hukommelse er ikke tildelt besked.

Hvad er malloc?

Malloc-funktionen bruges til at allokere den krævede mængde bytes i hukommelsen. Syntaks for malloc er som følger. Størrelsen repræsenterer den krævede hukommelse i bytes.

        tomrum * malloc (størrelse_t_størrelse);

Funktionen malloc returnerer en annulleret markør, så en cast-operatør bruges til at returnere pointer-typen i henhold til den krævede datatype.

Se det nedenstående enkle C-program med malloc-funktion.

#omfatte

#omfatte

int main ()

int ptr * = (int *) malloc (10 * størrelse af (int));

if (ptr == NULL)

printf (“Hukommelse er ikke tildelt”);

andet

printf ("Hukommelse er tildelt");

retur 0;

I henhold til ovenstående program tildeles hukommelsesblok. Markøren peger på startadressen til den tildelte hukommelse. Den returnerede markør konverteres til en heltalstype. Hvis der er allokeret hukommelse, udskrives en meddelelse om hukommelse. Hvis hukommelsen ikke er tildelt, vender en nulpinder tilbage. Derfor bliver hukommelsen ikke tildelt besked udskrives.

Hvad er ligheden mellem calloc og malloc?

  • Begge disse funktioner er deklareret i header-filen. Det er den standard biblioteksoverskriftsfil.
  • Begge funktioner bruges til dynamisk hukommelsesallokering.
  • Markøren, der returneres af calloc og malloc, skal kastes i den specifikke type.
  • Ved vellykket hukommelsesallokering returnerer begge funktioner en markør med hukommelsesblokkens basisadresse.
  • Hvis hukommelsestildelingen ikke lykkes, returneres en nulpinder.

Hvad er forskellen mellem calloc og malloc?

calloc vs malloc

calloc er en funktion til dynamisk hukommelsesallokering i C-sprog stdlib.h header-fil, der tildeler et specifikt antal bytes og initialiserer dem til nul. malloc er en funktion til dynamisk hukommelsesallokering i C-sprog stdlib.h header-fil, der tildeler et specifikt antal bytes.
 Betyder
calloc står for sammenhængende allokering. malloc står for hukommelsesallokering.
Syntaks
calloc følger en syntaks, der ligner tomrum * calloc (størrelse_t_nummer, størrelse_t størrelse); malloc følger en syntaks, der ligner tomrum * malloc (størrelse_t_størrelse);.
 Antal argumenter
calloc tager to argumenter. De er et antal blokke og størrelse på hver blok. malloc tager et argument. Det er et antal byte.
Hastighed
calloc tager lidt længere tid end malloc. Det er på grund af det ekstra trin med at initialisere den tildelte hukommelse med nul. malloc er hurtigere end calloc.

Resume - calloc vs malloc

I statisk hukommelsesallokering, sådan som vi bruger arrays, er hukommelsen fast. Hvis der er få elementer, der er gemt, spildes resten af ​​hukommelsen. Det kan også forårsage fejl, når den tildelte hukommelse er lille end den krævede hukommelse. Derfor bruges dynamisk hukommelsesallokering. På C-sprog giver calloc og malloc dynamisk hukommelsesallokering. Forskellen mellem calloc og malloc er, at calloc allokerer hukommelse og initialiserer også de tildelte hukommelsesblokke til nul, mens malloc tildeler hukommelsen, men ikke initialiserer hukommelsesblokke til nul. Malloc tager to argumenter, mens calloc tager to argumenter.

Download PDF'en af ​​calloc vs malloc

Du kan downloade PDF-versionen af ​​denne artikel og bruge den til offline-formål som angivet i citatnotatet. Download PDF-versionen her: Forskel mellem calloc og malloc

Reference:

1.Kumar, Krishan. “Forskellen mellem Malloc og Calloc i C.” Cs-Fundamentals.com, Cs-Fundamentals.com. Tilgængelig her  
2. "C dynamisk hukommelsesallokering." Wikipedia, Wikimedia Foundation, 13. januar 2018. Tilgængelig her 
3. "Calloc () versus malloc ()." GeeksforGeeks, 14. juni 2017. Findes her