Ero kallokin ja mallokin välillä

Avainero - kalloc vs malloc

Ohjelmoinnissa on tarpeen tallentaa tietoa. Tiedot tallennetaan muistiin. Nämä muistipaikat tunnetaan muuttujina. Jokaisella muuttujalla on erityinen tyyppi. Ne voivat olla kokonaislukuja, kelluvia, kaksinkertaisia, merkkejä jne. On myös tietorakenteita, jotka voivat tallentaa kiinteän koon peräkkäisen kokoelman samantyyppisiä elementtejä. Se on joukko. Ohjelmoijan on ilmoitettava taulukon koko. Jos ohjelmoija ilmoittaa kokonaislukujoukon viidelle elementille, ei ole mahdollista antaa arvoa indeksille, joka on suurempi kuin ilmoitettu koko. Muistin varaus on kiinteä, eikä sitä voida muuttaa ajon aikana. Muu muistin allokointimenetelmä on dynaaminen muistin allokointi. Dynaaminen muistinjako auttaa varaamaan enemmän muistia tarvittaessa ja vapauttamaan tarvittaessa. Otsikkotiedostossa on neljä toimintoa dynaamista muistin allokointia varten. kalloc ja malloc ovat kaksi tällaista funktiota. avainero välillä kalloc ja malloc on se calloc allokoi muistin ja myös alustaa allokoidut muistilohkot nollaan, kun taas malloc allokoi muistin, mutta ei alusta tätä allokoitua muistia nollaan. Sisällön käyttö kalloc-muodossa antaa nollan, mutta malloc antaa roskien arvon.

SISÄLLYS

1. Yleiskatsaus ja keskeiset erot
2. Mikä on kallokki?
3. Mikä on malloc?
4. Kallokin ja mallokin väliset yhtäläisyydet
5. Vertailu rinnakkain - calloc vs malloc taulukkomuodossa
6. Yhteenveto

Mikä on kallokki?

Muistin allokointi on prosessi, jossa muisti osoitetaan suorittaville ohjelmille. Joskus on tarpeen muuttaa muistin kokoa. Siksi käytetään dynaamista muistin allokointia. Se tehdään osoittimilla. Osoittimet ovat referenssimuuttujia, joilla on toisen muuttujan osoite.

Kuva 01: kallokki ja mallokki

calloc tarkoittaa ”vierekkäistä allokaatiota”. Se varaa useita muistikortteja samankokoisina. Kallokin syntaksi on seuraava. Se vie kaksi väitettä. Ne ovat lohkojen lukumäärä ja kunkin lohkon koko. Toiminto calloc palauttaa tyhjän osoittimen, joten valettua operaattoria käytetään palauttamaan osoittintyyppi vaaditun tietotyypin mukaan.

        tyhjä * kallokki (koko_numero, koko_koko);

Katso alla olevaa yksinkertaista C-ohjelmaa.

#sisältää

#sisältää

int main ()

int ptr * = (int *) kallokki (20, koko (int));

if (ptr == NULL)

printf (”Muistia ei ole varattu”);

else

printf (”Muisti on varattu”);

paluu 0;

Edellä mainitun ohjelman mukaan allokoidaan vierekkäinen muistilohko, johon mahtuu 20 elementtiä. Jokaisella on kokonaisluku. Kokoonpanoa (int) käytetään, koska kokonaisluvun tyyppi vaihtelee kääntäjästä toiseen.

Jos muistin allokointi onnistuu, se palauttaa muistilohkon perusosoitteen. Se tarkoittaa, että osoitin ptr osoittaa nyt tuon muistilohkon perusosoitteeseen. Kaikki allokoidut alueet alustetaan nollaksi. Se tulostaa varattu muisti -viestin. Jos muistin varaaminen epäonnistuu, se palauttaa nollaosoittimen. Siksi se tulostaa Muistia ei ole varattu -viesti.

Mikä on malloc?

Malloc-toimintoa käytetään varaamaan tarvittava määrä tavuja muistissa. Mallocin syntaksi on seuraava. Koko edustaa vaadittua muistia tavuina.

        tyhjä * malloc (koko_koko);

Toiminto malloc palauttaa tyhjän osoittimen, joten valettua operaattoria käytetään palauttamaan osoittintyyppi vaaditun tietotyypin mukaan.

Katso alla oleva yksinkertainen C-ohjelma malloc-toiminnolla.

#sisältää

#sisältää

int main ()

int ptr * = (int *) malloc (10 * kokoof (int));

if (ptr == NULL)

printf (”Muistia ei ole varattu”);

else

printf (”Muisti on varattu”);

paluu 0;

Yllä olevan ohjelman mukaan allokoidaan muistin lukumäärä. Osoitin osoittaa varatun muistin aloitusosoitteen. Palautettu osoitin muunnetaan kokonaislukutyyppiseksi. Jos muistia on varattu, se tulostaa muistille varatun viestin. Jos muistia ei ole varattu, nollaosoitin palaa. Siksi muisti ei ole varattu viesti tulostaa.

Mitkä ovat samankaltaisuudet kallokin ja mallokin välillä?

  • Molemmat toiminnot on ilmoitettu otsikkotiedostossa. Se on tavallinen kirjaston otsikkotiedosto.
  • Molempia toimintoja käytetään dynaamiseen muistin allokointiin.
  • Kallokin ja mallocin palauttama osoitin tulisi heittää tiettyyn tyyppiin.
  • Onnistuneessa muistin allokoinnissa molemmat toiminnot palauttavat osoittimen muistilohkon perusosoitteella.
  • Jos muistin varaaminen epäonnistuu, nollaosoitin palautetaan.

Mikä on erotus kallokin ja mallokin välillä??

kalloc vs malloc

calloc on dynaamisen muistin allokoinnin toiminto C-kielen stdlib.h-otsikkotiedostossa, joka allokoi tietyn määrän tavuja ja alustaa ne nollaan. malloc on dynaamisen muistin allokoinnin toiminto C-kielen stdlib.h-otsikkotiedostossa, joka allokoi tietyn määrän tavuja.
 merkitys
calloc tarkoittaa vierekkäistä allokointia. malloc tarkoittaa muistin varaamista.
Syntaksi
calloc seuraa syntaksia, joka on samanlainen kuin void * calloc (koko_t_num, koko_t koko); malloc seuraa syntaksia, joka on samanlainen kuin void * malloc (koko_t_koko);.
 Väitteiden lukumäärä
calloc esittää kaksi väitettä. Ne ovat useita lohkoja ja kunkin lohkon koko. malloc ottaa yhden väitteen. Se on useita tavuja.
Nopeus
kallokki vie vähän kauemmin kuin malloc. Tämä johtuu ylimääräisestä vaiheesta allokoidun muistin nolla. malloc on nopeampi kuin kalloc.

Yhteenveto - calloc vs malloc

Staattisessa muistin allokoinnissa, kuten meillä, jotka käyttävät taulukkoja, muisti on kiinteä. Jos muutama elementti on tallennettu, loput muistista menetetään. Se voi myös aiheuttaa virheitä, kun varattu muisti on pieni kuin vaadittu muisti. Siksi käytetään dynaamista muistin allokointia. C-kielellä calloc ja malloc tarjoavat dynaamisen muistin allokoinnin. Ero callocin ja mallocin välillä on se, että calloc varaa muistin ja myös alustaa allokoidut muistilohkot nollaan, kun taas malloc allokoi muistin, mutta ei alusta muistimuotoja nollaan. Malloc ottaa kaksi argumenttia, kun taas calloc ottaa kaksi argumenttia.

Lataa PDF muodossa calloc vs malloc

Voit ladata tämän artikkelin PDF-version ja käyttää sitä offline-tarkoituksiin lainauksen yhteydessä. Lataa PDF-versio tästä: Ero kallokin ja mallokin välillä

Viite:

1.Kumar, Krishan. "Ero Mallocin ja Callocin välillä C." Cs-Fundamentals.com, Cs-Fundamentals.com. Saatavilla täältä  
2. ”C-dynaaminen muistin allokointi.” Wikipedia, Wikimedia Foundation, 13. tammikuuta 2018. Saatavilla täältä 
3. “Calloc () vs. malloc ().” GeeksforGeeks, 14. kesäkuuta 2017. Saatavilla täältä