Különbség Malloc és New

Anonim

Malloc vs New

One A legfontosabb interjúkérdések egy számítógép-programozó felvételénél a kérelmező / a leggyakoribb interjúkérdések egy számítógép-programozó felvételére a kérelmező / számítógép-programozó számára a malloc és az új közötti különbség magyarázata. Mind a malloc, mind az új létezik a számítógép nyelvének területén, és gyakran használják a számítógépes programozók a dinamikus memóriaelosztásokhoz.

A kettő közötti alapvető különbség az, hogy a malloc létezik a C-nyelvben, míg az új a C ++ nyelv sajátossága. A Malloc egy olyan függvény (amely a programozók számára egy kis időt igényel a végrehajtáshoz), míg az új operációs program (amely lecsökkenti a végrehajtási időt). Ez a kezelő új előnye, hiszen a valós idejű programozást végző programozóknak a leggyorsabb módszert kell választaniuk.

Az új operátor típusbiztos, ellentétben a malloc funkcióval.

A malloc függvény könyvtár funkciója a C-nyelvnek. Mindössze annyit tesz, hogy kiosztja a memóriát, és visszahelyez egy mutatót. Másrészt az új operátor egy nyelvi szintű konstrukció, amelynek feladata egy objektum instantiálása azáltal, hogy felosztja a memóriát és felhívja a megfelelő konstruktort. A funkcionális malloc másik különbsége az új operátortól az az, hogy a malloc a beviteli nyilatkozat során a typecastingt írja elő, míg az előbbi nem. Továbbá, a malloc funkció a "szabad" szót használja a memória törléséhez, míg a "törlés" az új operátorban használatos hasonló célra.

A kettőnek különböző módjai vannak a hibák és a memória kimerülés kezelésére. Ha a function malloc sikertelen, akkor NULL mutatóval tér vissza. Az új operátor soha nem ad vissza egy NULL mutatót, de ahelyett, hogy kivételt dobott volna, hibát jelez. Ez előnyös az új operátor számára, mivel a számítógépes programozónak nem kell minden esetben újból felhívnia a visszatért mutatót, és a számítógép programozója sem hagyhatja figyelmen kívül ezt a kivételt.

A function malloc nem konstruál egy objektumot (objektumnak nevezik), de az új operátor nem. Az új megoldás másik előnye, hogy az operátor túlterhelt lehet, míg a funkció malloc nem képes. Az új operátor megköveteli, hogy egy bizonyos számú objektumot lefoglaljon, míg a malloc függvény megköveteli az allokálandó byteok számának meghatározását.

A memóriát újra fel lehet méretezni vagy átrendelni a funkcionális malloc segítségével a realloc használatával. Az új operátor azonban nem tudja végrehajtani ezt a funkciót, és az operátor egyik fő hátrányának számít. A malloc új előnye az új operátorral szemben az, hogy a malloc képes gyorsan bővíteni a memória mennyiségét. Ez még mindig malloc és realloc. Ha ugyanezt a helyzetet C ++ nyelven használja, akkor a programozónak új memóriát kell létrehoznia az új operátorral. Az új memóriának módosított méretűnek kell lennie, és az eredeti pufferből származó adatokon át kell másolni.Az eredeti puffert a másolat után törölni kell. Ez egy lassú folyamat lehet a programozó számára.

Az új operátor kihasználja a funkcionális malloc függvényt a pontos adattípus megadásával, míg a függvény érvénytelen *. A malloc funkciót nem lehet túlterhelni az új operátorral szemben, ahol túlterhelés lehetséges. Az új operátor új funkciója az, hogy kevésbé van esély a hibás működésre az operátorral szemben, mint a malloc funkció. Ez plusz a programozók számára, különösen akkor, ha sok kódot írnak, vagy egy szigorú ütemezésen dolgoznak egy kódon. A malloc és a free függvény használható C ++-ban, de nem használható közvetlenül. Célszerű új és törölni.

Összefoglaló:

1. A Malloc egy funkció, míg az új operátor.

2. Az új a C ++ nyelv egyik sajátossága, míg a malloc-ot a C-nyelvben használják.

3. Az új operátor a "törlés" -nel folytatódik, míg a function malloc megy az "ingyenes. „

4. A function malloc könyvtár funkció a C-nyelv számára, míg az új operátor egy nyelvi szintű konstrukció a C ++ nyelvből.