Forskjellen mellom calloc og malloc

Innholdsfortegnelse:

Forskjellen mellom calloc og malloc
Forskjellen mellom calloc og malloc

Video: Forskjellen mellom calloc og malloc

Video: Forskjellen mellom calloc og malloc
Video: Информатика. Язык Си: Системные вызовы malloc() и free() в Си. Центр онлайн-обучения «Фоксфорд» 2024, Juli
Anonim

Nøkkelforskjell – calloc vs malloc

I programmering er det nødvendig å lagre data. Data lagres i minnet. Disse minnestedene er kjent som variabler. Hver variabel har en bestemt type. De kan være heltall, flyter, dobler, tegn osv. Det finnes også datastrukturer som kan lagre en sekvensiell samling av elementer av samme type med fast størrelse. Det er en rekke. Programmereren må deklarere matrisestørrelsen. Hvis programmereren erklærer en matrise med heltall for fem elementer, er det ikke mulig å tilordne en verdi til en indeks som er høyere enn den deklarerte størrelsen. Minnetildelingen er fast, og den kan ikke endres under kjøring. En annen minnetildelingsmetode er dynamisk minneallokering. Dynamisk minnetildeling hjelper til med å tildele mer minne når det er nødvendig og frigjøre når det er nødvendig. Header-filen har fire funksjoner for dynamisk minneallokering. calloc og malloc er to slike funksjoner. Hovedforskjellen mellom calloc og malloc er at calloc allokerer minnet og også initialiserer de tildelte minneblokkene til null, mens malloc tildeler minnet, men initialiserer ikke det tildelte minnet til null. Å få tilgang til innholdet i calloc vil gi null, men malloc vil gi en søppelverdi.

Hva er calloc?

Minneallokering er prosessen med å tilordne minne til de kjørende programmene. Noen ganger er det nødvendig å endre størrelsen på minnet. Derfor brukes dynamisk minneallokering. Det gjøres ved hjelp av pekere. Pekere er referansevariabler som inneholder adressen til en annen variabel.

Forskjellen mellom calloc og malloc
Forskjellen mellom calloc og malloc

Figur 01: calloc og malloc

calloc står for «sammenhengende allokering». Den tildeler flere minneblokker med samme størrelse. Syntaksen for calloc er som følger. Det krever to argumenter. De er antall blokker og størrelsen på hver blokk. Funksjonen calloc returnerer en void-peker, så en cast-operator brukes til returnert pekertype i henhold til den nødvendige datatypen.

voidcalloc(size_t num, size_t size);

Se det enkle C-programmet nedenfor.

include

include

int main(){

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

if (ptr==NULL){

printf(“Minne er ikke tildelt”);

}

else{

printf(“Minne er tildelt”);

}

retur 0;

}

I henhold til programmet ovenfor tildeles en sammenhengende minneblokk som kan inneholde 20 elementer. Hver vil ha størrelsen på et heltall. Størrelsen på(int) brukes fordi heltallstypen varierer fra kompilator til kompilator.

Hvis minnetildelingen er vellykket, vil den returnere basisadressen til minneblokken. Det betyr at pekeren ptr nå peker til basisadressen til den minneblokken. Alle tildelte regioner initialiseres til null. Den vil skrive ut meldingen Minnetildelt. Hvis minnetildelingen mislykkes, vil den returnere null-pekeren. Derfor vil den skrives ut Minnet er ikke tildelt melding.

Hva er malloc?

Malloc-funksjonen brukes til å tildele den nødvendige mengden byte i minnet. Syntaksen for malloc er som følger. Størrelsen representerer det nødvendige minnet i byte.

void malloc(size_t_size);

Funksjonen malloc returnerer en void-peker, så en cast-operator brukes til returnert pekertype i henhold til den nødvendige datatypen.

Se det enkle C-programmet nedenfor med malloc-funksjon.

include

include

int main(){

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

if (ptr==NULL){

printf(“Minne er ikke tildelt”);

}

else{

printf(“Minne er tildelt”);

}

retur 0;

}

I henhold til programmet ovenfor vil minneblokk tildeles. Pekeren peker på startadressen til det tildelte minnet. Den returnerte pekeren konverteres til en heltallstype. Hvis minne er tildelt, vil det skrive ut minnet tildelt melding. Hvis minnet ikke er tildelt, vil en null-peker returnere. Derfor er minne ikke tildelt melding vil skrives ut.

Hva er likhetene mellom calloc og malloc?

  • Begge disse funksjonene er deklarert i overskriftsfilen. Det er standard bibliotekhodefil.
  • Begge funksjoner brukes for dynamisk minneallokering.
  • Pekeren som returneres av calloc og malloc skal kastes inn i den spesifikke typen.
  • Ved vellykket minnetildeling vil begge funksjonene returnere en peker med basisadressen til minneblokken.
  • Hvis minnetildelingen mislykkes, vil en null-peker bli returnert.

Hva er forskjellen mellom calloc og malloc?

calloc vs malloc

calloc er en funksjon for dynamisk minneallokering i C-språket stdlib.h header-fil som tildeler et spesifikt antall byte og initialiserer dem til null. malloc er en funksjon for dynamisk minneallokering i C-språk stdlib.h header-fil som tildeler et spesifikt antall byte.
Betydning
calloc står for sammenhengende tildeling. malloc står for minnetildeling.
Syntax
calloc følger en syntaks som ligner på void calloc(size_t_num, size_t size); malloc følger en syntaks som ligner void malloc(size_t_size);.
Antall argumenter
calloc tar to argumenter. De er et antall blokker og størrelsen på hver blokk. malloc tar ett argument. Det er et antall byte.
Speed
calloc tar litt lengre tid enn malloc. Det er på grunn av det ekstra trinnet med å initialisere det tildelte minnet med null. malloc er raskere enn calloc.

Sammendrag – calloc vs malloc

I statisk minneallokering som ved bruk av matriser, er minnet fikset. Hvis få elementer er lagret, er resten av minnet bortkastet. Det kan også forårsake feil når det tildelte minnet er lite enn det nødvendige minnet. Derfor brukes dynamisk minneallokering. I C-språk gir calloc og malloc dynamisk minneallokering. Forskjellen mellom calloc og malloc er at calloc allokerer minne og også initialiserer de tildelte minneblokkene til null mens malloc tildeler minnet, men initialiserer ikke minneblokker til null. Malloc tar to argumenter mens calloc tar to argumenter.

Last ned PDF-en av calloc vs malloc

Du kan laste ned PDF-versjonen av denne artikkelen og bruke den til offline-formål i henhold til sitat. Last ned PDF-versjonen her: Difference Between calloc og malloc

Anbefalt: