A programozás során adatokat kell tárolni. Az adatokat a memória tárolja. Ezeket a memóriahelyeket változónak nevezzük. Minden változónak van egy meghatározott típusa. Lehetnek egész számok, úszók, párosok, karakterek stb. Vannak olyan adatstruktúrák is, amelyek rögzítik az azonos típusú elemek rögzített méretű szekvenciális gyűjteményét. Ez egy tömb. A programozónak deklarálnia kell a tömb méretét. Ha a programozó egész elem tömböt deklarál öt elemre, akkor nem lehet értéket hozzárendelni a deklarált méretnél nagyobb indexhez. A memória allokáció rögzített, és futás közben nem módosítható. Másik memóriaelosztási módszer a dinamikus memóriaelosztás. A dinamikus memóriaelosztás elősegíti a további memória elosztását, ha szükséges, és felszabadítja. A fejléc fájlnak négy funkciója van a dinamikus memóriaelosztáshoz. A calloc és a malloc két ilyen funkció. Az kulcs különbség a calloc és a malloc között ez az A calloc kiosztja a memóriát, és nullára inicializálja a kiosztott memória blokkokat, míg a malloc kiosztja a memóriát, de nem inicializálja a kiosztott memóriát nullára.. A kalloc-tartalom elérése nullát eredményez, de a malloc szemetet jelent.
1. Áttekintés és a legfontosabb különbség
2. Mi a kallok?
3. Mi az a malloc?
4. hasonlóságok a kalloc és a malloc között
5. Side by Side összehasonlítás - calloc vs malloc táblázatos formában
6. Összegzés
A memória allokáció a memória hozzárendelésének folyamata a végrehajtó programok számára. Időnként meg kell változtatni a memória méretét. Ezért a dinamikus memóriaelosztást használjuk. Ez mutatók segítségével történik. A mutatók olyan referenciaváltozók, amelyek egy másik változó címét tárolják.
01. ábra: kalloc és malloc
A calloc a „szomszédos elosztást” jelenti. Több memóriablokkot oszt ki, azonos méretű. A kalloc szintaxisa a következő. Két érvre van szükség. Ezek a blokkok száma és az egyes blokkok mérete. A calloc függvény érvénytelen mutatót ad vissza, tehát egy cast operátort használunk a mutató típusának a szükséges adattípus szerinti visszatérésére..
void * calloc (méret_szám, méret_ méret);
Lásd az alábbi egyszerű C programot.
#include
#include
int main ()
int ptr * = (int *) kalloc (20, méret (int));
if (ptr == NULL)
printf („A memória nincs allokálva”);
más
printf („A memória hozzá van rendelve”);
visszatérés 0;
A fenti program szerint egy szomszédos memóriablokkot osztunk ki, amely 20 elemet képes tárolni. Mindegyik egész számú lesz. Az (int) méret azért használatos, mert az egész szám típusa fordítónként változik.
Ha a memóriaelosztás sikeres, akkor a memóriablokk alapcímét adja vissza. Ez azt jelenti, hogy a ptr mutató most a memóriablokk alap címére mutat. Az összes kiosztott régiót nullákra állítja be. Kinyomtatja a memória allokált üzenetet. Ha a memóriaelosztás sikertelen, akkor a null mutatót adja vissza. Ezért kinyomtatja. A memória nincs hozzárendelve üzenet.
A malloc függvény a szükséges mennyiségű bájt allokálására szolgál a memóriában. A malloc szintaxisa a következő. A méret jelzi a szükséges memóriát bájtban.
void * malloc (méret_t_méret);
A malloc függvény érvénytelen mutatót ad vissza, tehát egy cast operátort használunk a mutató típusának visszaadására a kívánt adattípus szerint.
Lásd az alábbiakban bemutatott egyszerű C programot, amely malloc funkcióval rendelkezik.
#include
#include
int main ()
int ptr * = (int *) malloc (10 * méret (int));
if (ptr == NULL)
printf („A memória nincs allokálva”);
más
printf („A memória hozzá van rendelve”);
visszatérés 0;
A fenti program szerint a memória blokkjai kerülnek kiosztásra. A mutató a kiosztott memória kezdőcímére mutat. A visszaadott mutatót egész számtá alakítja. Ha memória van lefoglalva, akkor a memória kinyomtatja az allokált üzenetet. Ha a memóriát nem osztja le, akkor a nullmutató visszatér. Ezért a memória nincs lefoglalva az üzenet kinyomtatódik.
kalloc vs malloc | |
A calloc a stdlib.h fejlécfájlban található dinamikus memóriaelosztás funkciója, amely egy meghatározott számú bájtot allokál és nullára inicializál.. | A malloc a stdlib.h fejlécfájl dinamikus memóriaelosztásának funkciója, amely meghatározott számú bájtot foglal le. |
Jelentés | |
A calloc a szomszédos elosztást jelenti. | A malloc a memóriaelosztást jelenti. |
Szintaxis | |
A calloc a void * callochoz hasonló szintaxist követi (méret_t_szám, méret_t méret); | A malloc a void * mallochoz hasonló szintaxist követi (méret_t_méret);. |
Az érvek száma | |
A calloc két érveléssel foglalkozik. Ezek a blokkok száma és az egyes blokkok mérete. | A malloc egy érvet vesz fel. Számos bájt. |
Sebesség | |
A kalloc alig tart, mint a malloc. Ennek oka az, hogy a kiosztott memóriát nullával inicializálják. | A malloc gyorsabb, mint a calloc. |
Statikus memóriakiosztásnál, például tömbök használatával, a memória rögzített. Ha kevés elem van tárolva, akkor a memória fennmaradó része pazarlik. Ez akkor is hibákat okozhat, ha a lefoglalt memória kisebb, mint a szükséges memória. Ezért a dinamikus memóriaelosztást használjuk. C nyelven a calloc és malloc dinamikus memóriaelosztást biztosít. A calloc és a malloc közötti különbség az, hogy a calloc elosztja a memóriát, és szintén nullázza a kiosztott memória blokkokat, míg a malloc elosztja a memóriát, de nem inicializálja a memória blokkokat. Malloc két érvet, míg a calloc két érvet vesz fel.
Letöltheti a cikk PDF változatát, és offline célokra felhasználhatja, az idézet megjegyzésének megfelelően. Kérjük, töltse le a PDF verziót itt: Különbség a calloc és a malloc között
1.Kumar, Krishan. „Különbség Malloc és Calloc között C. Cs-Fundamentals.com, Cs-Fundamentals.com. Itt érhető el
2. „C dinamikus memória allokáció.” Wikipedia, Wikimedia Alapítvány, 2018. január 13. Elérhető itt
3. „Calloc () versus malloc ().” GeeksforGeeks, 2017. június 14. Itt érhető el