Pri programiranju je potrebno shranjevanje podatkov. Podatki so shranjeni v pomnilniku. Te pomnilniške lokacije so znane kot spremenljivke. Vsaka spremenljivka ima določeno vrsto. Lahko so cela števila, plovci, dvojniki, znaki itd. Obstajajo tudi podatkovne strukture, ki lahko shranijo zaporedno zbirko elementov iste vrste z določeno velikostjo. To je niz. Programer mora razglasiti velikost matrike. Če programer razglasi matriko celih števil za pet elementov, ni mogoče dodeliti vrednosti indeksu, višjem od deklarirane velikosti. Dodelitev pomnilnika je fiksna in je ni mogoče spremeniti med izvajanjem. Drugi način dodeljevanja pomnilnika je dinamična dodelitev pomnilnika. Dinamična dodelitev pomnilnika pomaga dodeliti več pomnilnika, kadar je potrebno, in sprostiti, če je potrebno. Datoteka glave ima štiri funkcije za dinamično razporeditev pomnilnika. calloc in malloc sta dve taki funkciji. The ključna razlika med calloc in malloc je to calloc dodeli pomnilnik in tudi inicializira dodeljene pomnilniške bloke na nič, medtem ko malloc dodeli pomnilnik, vendar ne inicializira, ki je dodelil pomnilnik na nič. Če dostopate do vsebine v calloku, boste dobili nič, toda malloc bo dal smeti.
1. Pregled in ključne razlike
2. Kaj je calloc
3. Kaj je malloc
4. Podobnosti med calloc in malloc
5. Primerjava drug ob drugem - calloc vs malloc v tabeli
6. Povzetek
Dodelitev pomnilnika je postopek dodelitve pomnilnika izvajalnim programom. Včasih je treba spremeniti velikost pomnilnika. Zato se uporablja dinamična dodelitev pomnilnika. Izvede se s pomočjo kazalcev. Kazalci so referenčne spremenljivke, ki imajo naslov druge spremenljivke.
Slika 01: calloc in malloc
calloc pomeni „sočasno dodeljevanje“. Dodeljuje več blokov pomnilnika z isto velikostjo. Sintaksa za calloc je naslednja. Ta ima dva argumenta. So število blokov in velikost vsakega bloka. Funkcija calloc vrne neveljaven kazalec, zato se za vrnjen tip kazalca uporabi zahtevani operater v skladu z zahtevanim tipom podatkov.
void * calloc (velikost_t število, velikost_t velikost);
Glejte spodnji preprost program C.
#include
#include
int main ()
int ptr * = (int *) calloc (20, sizeof (int));
če (ptr == NULL)
printf (»Pomnilnik ni dodeljen«);
drugače
printf ("Dodeljen je spomin");
vrne 0;
Glede na zgornji program je dodeljen neprekinjeni blok pomnilnika, ki lahko vsebuje 20 elementov. Vsak bo imel velikost celega števila. Velikost (int) se uporablja, ker se celo število razlikuje od prevajalnika do prevajalnika.
Če je dodelitev pomnilnika uspešna, bo vrnila osnovni naslov pomnilniškega bloka. To pomeni, da kazalec ptr zdaj kaže na osnovni naslov tega pomnilniškega bloka. Vsa dodeljena področja so inicializirana na ničle. Natisnilo bo sporočilo o dodeljenem pomnilniku. Če dodelitev pomnilnika ni uspešna, bo vrnila ničelni kazalec. Zato bo natisnil sporočilo Pomnilnik ni dodeljen.
Funkcija malloc se uporablja za dodelitev potrebne količine bajtov v pomnilniku. Sintaksa za malloc je naslednja. Velikost predstavlja potreben pomnilnik v bajtih.
void * malloc (velikost_t_size);
Funkcija malloc vrne neveljaven kazalec, zato se za vrnjen tip kazalca uporablja zahtevani operater v skladu z zahtevanim tipom podatkov.
Spodaj glejte preprost program C s funkcijo malloc.
#include
#include
int main ()
int ptr * = (int *) malloc (velikost 10 * (int));
če (ptr == NULL)
printf (»Pomnilnik ni dodeljen«);
drugače
printf ("Dodeljen je spomin");
vrne 0;
Po zgornjem programu bo dodeljen blok pomnilnika. Kazalec kaže na začetni naslov dodeljenega pomnilnika. Vrnjeni kazalec se pretvori v celo število. Če je dodeljen pomnilnik, bo tiskal spomin dodeljeno sporočilo. Če pomnilnik ni dodeljen, se vrne ničelni kazalec. Zato pomnilnik ni dodeljen bo natisnjeno sporočilo.
calloc vs malloc | |
calloc je funkcija za dinamično razporeditev pomnilnika v glavi datoteke stdlib.h jezika C, ki dodeli določeno število bajtov in jih inicializira na nič. | malloc je funkcija za dinamično dodelitev pomnilnika v glavi datoteke stdlib.h jezika C, ki dodeli določeno število bajtov. |
Pomen | |
calloc pomeni sočasno dodeljevanje. | malloc pomeni dodeljevanje pomnilnika. |
Sintaksa | |
calloc sledi skladnji, podobni void * calloc (size_t_num, size_t size); | malloc sledi skladnji, podobni void * malloc (size_t_size);. |
Število argumentov | |
calloc ima dva argumenta. So številni bloki in velikosti vsakega bloka. | malloc vzame en argument. To je več bajtov. |
Hitrost | |
calloc traja malo dlje kot malloc. To je zaradi dodatnega koraka inicializacije dodeljenega pomnilnika na nič. | malloc je hitrejši od calloc. |
Pri statični dodelitvi pomnilnika, kakršni uporabljamo matrike, je pomnilnik fiksiran. Če je shranjenih malo elementov, se preostali del pomnilnika zapravi. Prav tako lahko povzroči napake, če je dodeljeni pomnilnik manjši od potrebnega pomnilnika. Zato se uporablja dinamična dodelitev pomnilnika. V jeziku C calloc in malloc zagotavljata dinamično razporeditev spomina. Razlika med calloc in malloc je, da calloc dodeli pomnilnik in tudi inicializira dodeljene pomnilniške bloke na nič, medtem ko malloc dodeli pomnilnik, vendar ne inicializira pomnilniških blokov na nič. Malloc ima dva argumenta, calloc pa dva.
Lahko prenesete PDF različico tega članka in jo uporabite za namene brez povezave, kot je navedeno v navodilu. Prosimo, da prenesete PDF različico tukaj: Razlika med calloc in malloc
1.Kumar, Krišan. "Razlika med Mallokom in Callocom v C." Cs-Fundamentals.com, Cs-Fundamentals.com. Na voljo tukaj
2. "C dinamična dodelitev pomnilnika." Wikipedia, fundacija Wikimedia, 13. januar 2018. Dostopno tukaj
3. "Calloc () proti malloc ()." GeeksforGeeks, 14. junij 2017. Na voljo tukaj