Ved programmering er det nødvendig å lagre data. Data lagres i minnet. Disse minnesstedene er kjent som variabler. Hver variabel har en bestemt type. De kan være heltall, flyter, dobler, tegn osv. Det er også datastrukturer som kan lagre en fast rekkefølge samling av elementer av samme type. Det er en matrise. Programmereren må deklarere arraystørrelsen. Hvis programmereren angir en rekke heltal for fem elementer, er det ikke mulig å tildele en verdi til en indeks høyere enn den oppgitte størrelsen. Minnetildelingen er fast, og kan ikke endres på kjøretid. Annen minnetildelingsmetode er dynamisk minneallokering. Dynamisk minneallokering bidrar til å tildele mer minne når det kreves og slippes når det er nødvendig. Overskriftsfilen har fire funksjoner for dynamisk minneallokering. calloc og malloc er to slike funksjoner. De nøkkelforskjell mellom calloc og malloc er det calloc tildeler minnet og initierer også de tildelte minneblokkene til null mens malloc tildeler minnet, men initierer ikke det tildelte minnet til null. Å få tilgang til innholdet i calloc vil gi null, men malloc vil gi en søppelverdi.
1. Oversikt og nøkkelforskjell
2. Hva er calloc
3. Hva er malloc
4. Likheter mellom calloc og malloc
5. Side ved side sammenligning - calloc vs malloc i tabellform
6. Sammendrag
Minneallokering er prosessen med å tilordne minne for de utførte programmene. Noen ganger er det nødvendig å endre størrelsen på minnet. Derfor brukes dynamisk minneallokering. Det er gjort ved hjelp av pekere. Pekere er referansevariabler som holder adressen til en annen variabel.
Figur 01: calloc og malloc
calloc står for "sammenhengende tildeling". Den tildeler flere blokker med minne med samme størrelse. Syntaksen for calloc er som følger. Det tar to argumenter. De er antall blokker og størrelsen på hver blokk. Funksjonskallokaten returnerer en tomrompeker, så en kastet operatør brukes til å returnere pekertypen i henhold til ønsket datatype.
void * calloc (size_t num, size_t størrelse);
Se under det enkle C-programmet.
#inkludere
#inkludere
int main ()
int ptr * = (int *) calloc (20, sizeof (int));
hvis (ptr == NULL)
printf ("Minne er ikke tildelt");
ellers
printf ("Minne er tildelt");
returner 0;
Ifølge det ovennevnte programmet tildeles en sammenhengende blokk med minne som kan inneholde 20 elementer. Hver vil ha størrelsen på et heltall. Størrelsen av (int) brukes fordi heltalstypen varierer fra kompilator til kompilator.
Hvis minnetallingen er vellykket, vil den returnere baseadressen til minnesblokken. Det betyr at pekeren ptr peker nå på basisadressen til minnesblokken. Alle tildelte regioner initialiseres til nuller. Det vil skrive ut meldingen Memory Allocated. Hvis minnetildelingen mislykkes, returnerer nullpunktet. Derfor vil den skrive ut Minne er ikke tildelt melding.
Malloc-funksjonen brukes til å tildele den nødvendige mengden byte i minnet. Syntaxen for malloc er som følger. Størrelsen representerer det nødvendige minnet i byte.
void * malloc (size_t_size);
Funksjonen malloc returnerer en tomrompeker, så en kastet operatør brukes til å returnere pekertype i henhold til nødvendig datatype.
Se under det enkle C-programmet med malloc-funksjonen.
#inkludere
#inkludere
int main ()
int ptr * = (int *) malloc (10 * sizeof (int));
hvis (ptr == NULL)
printf ("Minne er ikke tildelt");
ellers
printf ("Minne er tildelt");
returner 0;
I henhold til det ovennevnte programmet vil minneblokk bli tildelt. Pekeren peker på startadressen til det tildelte minnet. Den returnerte pekeren konverteres til en heltalltype. Hvis minnet er tildelt, vil det bli utskrevet minne tildelt melding. Hvis minnet ikke er tildelt, vil en nullpeker returnere. Derfor er ikke minnet tildelt melding vil skrive ut.
calloc vs malloc | |
calloc er en funksjon for dynamisk minneallokering i C-språk stdlib.h header-fil som tildeler et bestemt 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 bestemt antall byte. |
Betydning | |
calloc står for sammenhengende tildeling. | malloc står for minneallokering. |
syntax | |
calloc følger en syntaks som ligner ugyldig * calloc (size_t_num, size_t størrelse); | malloc følger en syntaks som ligner ugyldig * malloc (size_t_size);. |
Antall argumenter | |
calloc tar to argumenter. De er et antall blokker og størrelser på hver blokk. | malloc tar ett argument. Det er en rekke byte. |
Hastighet | |
calloc tar litt lengre tid enn malloc. Det er på grunn av det ekstra trinnet å initialisere det tildelte minnet med null. | malloc er raskere enn calloc. |
Ved statisk minneallokering, slik at vi bruker arrays, er minnet løst. Hvis få elementer lagres, er resten av minnet sløsing. Det kan også føre til 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 tildeler minne og også initierer de tildelte minneblokkene til null mens malloc tildeler minnet, men initierer ikke minneblokker til null. Malloc tar to argumenter mens calloc tar to argumenter.
Du kan laste ned PDF-versjonen av denne artikkelen og bruke den til nettbasert bruk som per sitatnotat. Vennligst last ned PDF-versjonen her: Forskjell mellom calloc og malloc
1.Kumar, Krishan. "Forskjellen mellom Malloc og Calloc i C." Cs-Fundamentals.com, Cs-Fundamentals.com. Tilgjengelig her
2. "C dynamisk minneallokering." Wikipedia, Wikimedia Foundation, 13. januar 2018. Tilgjengelig her
3. "Calloc () versus malloc ()." GeeksforGeeks, 14. juni 2017. Tilgjengelig her