Különbség a calloc és a malloc között

Tartalomjegyzék:

Különbség a calloc és a malloc között
Különbség a calloc és a malloc között

Videó: Különbség a calloc és a malloc között

Videó: Különbség a calloc és a malloc között
Videó: Linux Kernel Programming - kmalloc() vs vmalloc() kernel space memory allocation #TheLinuxChannel 2024, November
Anonim

Kulcskülönbség – calloc vs malloc

A programozásban adatok tárolására van szükség. Az adatok a memóriában tárolódnak. Ezeket a memóriahelyeket változóknak nevezzük. Minden változónak van egy meghatározott típusa. Lehetnek egész számok, lebegőpontok, duplák, karakterek stb. Vannak olyan adatstruktúrák is, amelyek azonos típusú elemek fix méretű szekvenciális gyűjteményét tárolhatják. Ez egy tömb. A programozónak deklarálnia kell a tömb méretét. Ha a programozó egész számokból álló tömböt deklarál öt elemhez, akkor a deklarált méretnél nagyobb indexhez nem lehet értéket rendelni. A memóriafoglalás rögzített, és futás közben nem módosítható. Egy másik memóriafoglalási módszer a dinamikus memóriafoglalás. A dinamikus memóriafoglalás segít több memória lefoglalásában, ha szükséges, és szükség esetén felszabadításában. A fejlécfájl négy funkcióval rendelkezik a dinamikus memóriafoglaláshoz. a calloc és a malloc két ilyen függvény. A legfontosabb különbség a calloc és a malloc között az, hogy a calloc lefoglalja a memóriát, és nullára inicializálja a lefogl alt memóriablokkokat, míg a malloc lefoglalja a memóriát, de nem inicializálja nullára. A calloc tartalom elérése nullát ad, de a malloc szemét értéket ad.

Mi az a calloc?

A memória lefoglalása a memória hozzárendelésének folyamata a végrehajtó programok számára. Néha meg kell változtatni a memória méretét. Ezért dinamikus memóriafoglalást használnak. Ez mutatók segítségével történik. A mutatók referenciaváltozók, amelyek egy másik változó címét tartalmazzák.

Különbség a calloc és a malloc között
Különbség a calloc és a malloc között

01. ábra: calloc és malloc

A calloc az „összefüggő kiosztás” rövidítése. Több, azonos méretű memóriablokkot foglal le. A calloc szintaxisa a következő. Két érv kell hozzá. Ezek a blokkok számát és az egyes blokkok méretét jelentik. A calloc függvény érvénytelen mutatót ad vissza, ezért egy cast operátort használnak a mutató típusának visszaadásához a szükséges adattípusnak megfelelően.

voidcalloc(size_t num, size_t size);

Lásd az alábbi egyszerű C programot.

tartalmazza

tartalmazza

int main(){

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

if (ptr==NULL){

printf("A memória nincs lefoglalva");

}

egyéb{

printf(“Memória lefoglalva”);

}

vissza 0;

}

A fenti program szerint egy összefüggő memóriablokk van lefoglalva, amely 20 elemet tud tárolni. Mindegyik akkora lesz, mint egy egész szám. A sizeof(int) azért használatos, mert az egész típus fordítóról fordítóra változik.

Ha a memóriafoglalás sikeres, akkor visszaadja a memóriablokk alapcímét. Ez azt jelenti, hogy a ptr mutató most a memóriablokk alapcímére mutat. Minden lefogl alt régió nullára van inicializálva. Kinyomtatja a Memória lefoglalva üzenetet. Ha a memóriafoglalás sikertelen, akkor a null mutatót adja vissza. Ezért a memória nincs lefoglalva üzenetet nyomtat.

Mi az a malloc?

A malloc függvény a szükséges mennyiségű bájt lefoglalására szolgál a memóriában. A malloc szintaxisa a következő. A méret a szükséges memóriát jelenti bájtban.

void malloc(size_t_size);

A malloc függvény érvénytelen mutatót ad vissza, így egy cast operátort használ a mutató típusának visszaadásához a szükséges adattípusnak megfelelően.

Tekintse meg az alábbi egyszerű C programot malloc funkcióval.

tartalmazza

tartalmazza

int main(){

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

if (ptr==NULL){

printf("A memória nincs lefoglalva");

}

egyéb{

printf(“Memória lefoglalva”);

}

vissza 0;

}

A fenti program szerint a memóriablokk lefoglalásra kerül. A mutató a lefogl alt memória kezdőcímére mutat. A visszaadott mutató egész típussá alakul. Ha memória le van foglalva, a memória lefoglalva üzenetet nyomtat. Ha a memória nincs lefoglalva, nulla mutató jelenik meg. Ezért a memória nincs lefoglalva, az üzenet kinyomtatásra kerül.

Mi a hasonlóság a calloc és a malloc között?

  • Mindkét függvény deklarálva van a fejlécfájlban. Ez a szabványos könyvtári fejlécfájl.
  • Mindkét funkció dinamikus memóriafoglaláshoz használható.
  • A calloc és malloc által visszaadott mutatót az adott típusba kell önteni.
  • Sikeres memóriafoglalás esetén mindkét függvény egy mutatót ad vissza a memóriablokk alapcímével.
  • Ha a memóriafoglalás sikertelen, null mutatót ad vissza a rendszer.

Mi a különbség a calloc és a malloc között?

calloc vs malloc

A calloc egy dinamikus memóriafoglalási függvény a C nyelvű stdlib.h fejlécfájlban, amely meghatározott számú bájtot foglal le és nullára inicializálja. A malloc egy dinamikus memóriafoglalási függvény C nyelvű stdlib.h fejlécfájlban, amely meghatározott számú bájtot foglal le.
Jelentés
A calloc a szomszédos allokációt jelenti. A malloc a memóriafoglalást jelenti.
Syntax
A calloc a void calloc(size_t_num, size_t size); szintaxist követi A malloc a void malloc(size_t_size);.-hoz hasonló szintaxist követ
Érvek száma
calloc két argumentumot vesz fel. Ezek több blokkból és az egyes blokkok méretéből állnak. A malloc egy érvet vesz fel. Ez több bájtból áll.
Sebesség
A calloc valamivel tovább tart, mint a malloc. Ennek oka a lefogl alt memória nullával történő inicializálása. malloc gyorsabb, mint calloc.

Összefoglaló – calloc vs malloc

A statikus memóriakiosztásnál, például tömbök használatával, a memória rögzített. Ha kevés elemet tárolunk, akkor a memória többi része elpazarol. Az is okozhat hibákat, ha a lefogl alt memória kicsi, mint a szükséges memória. Ezért dinamikus memóriafoglalást használnak. A C nyelvben a calloc és a malloc dinamikus memóriafoglalást biztosít. A calloc és a malloc közötti különbség az, hogy a calloc lefoglalja a memóriát, és nullára inicializálja a lefogl alt memóriablokkokat, míg a malloc lefoglalja a memóriát, de nem inicializálja a memóriablokkokat nullára. A Malloc két argumentumot vesz fel, míg a calloc két argumentumot.

A calloc vs malloc PDF letöltése

A cikk PDF-verzióját letöltheti, és offline célokra használhatja az idézési megjegyzés szerint. Kérjük, töltse le a PDF verziót innen: A calloc és a malloc közötti különbség

Ajánlott: