Rozdiel medzi Malloc a New

Malloc vs Nové
Jednou z najbežnejších otázok na pohovor pri prijímaní počítačového programátora je, aby žiadateľ / počítačový programátor vysvetlil rozdiely medzi mallocom a novým. Malloc aj nové existujú v oblasti počítačového jazyka a počítačové programátory ich často používajú na dynamické prideľovanie pamäte.

Základné rozdiely medzi nimi sú, že malloc existuje v jazyku C, zatiaľ čo nový je špecifickou črtou jazyka C ++. Malloc je tiež funkcia (ktorá pre programátorov vyžaduje určitý čas na vykonanie), zatiaľ čo nová je operačný program (ktorý skracuje dobu vykonávania). Toto je výhoda nového operátora, pretože programátori, ktorí programujú v reálnom čase, musia zvoliť najrýchlejšiu metódu, ktorú majú použiť.

Nový operátor je na rozdiel od funkcie malloc bezpečný z hľadiska typu.
Funkcia malloc je funkcia knižnice pre C-jazyk. Jediné, čo robí, je prideliť pamäť a vrátiť na ňu ukazovateľ. Na druhej strane nový operátor je konštrukt na úrovni jazyka a jeho úlohou je vytvoriť inštanciu objektu pridelením pamäte a volaním príslušných konštruktorov. Ďalším rozdielom vo funkcii malloc od nového operátora je to, že malloc vyžaduje typové písanie počas deklarovania, zatiaľ čo ten prvý nemá. Funkcia malloc tiež používa slovo „free“ na vymazanie pamäte, zatiaľ čo „delete“ sa používa u operátora nového na podobné účely.

Obaja majú tiež rôzne spôsoby riešenia zlyhania a vyčerpania pamäte. Ak funkcia malloc zlyhá, vráti sa s ukazovateľom NULL. Operátor new nikdy nevracia ukazovateľ NULL, ale namiesto toho vyvolá výnimku indikáciou zlyhania. Toto je výhoda pre nového operátora, pretože počítačový programátor nemusí kontrolovať vrátený ukazovateľ zakaždým, keď volá nové, ani programátorovi takáto výnimka nebude chýbať.

Funkcia malloc netvorí objekt (nazývaný konštruktor objektu), ale operátor nový robí. Ďalšou výhodou nového je, že operátor môže byť preťažený, zatiaľ čo funkcia malloc nemôže. Operátor new vyžaduje, aby sa vyhradil určitý počet objektov, zatiaľ čo funkcia malloc vyžaduje zadanie celkového počtu bajtov, ktoré sa majú prideliť.

Pamäť sa dá tiež zmeniť veľkosť alebo prerozdeliť pomocou funkcie malloc pomocou realloc. Nový operátor však nemôže túto funkciu vykonávať a považuje ju za jednu z hlavných nevýhod prevádzkovateľa. Ďalšou výhodou funkcie malloc oproti novému operátorovi je to, že malloc môže rýchlo rozšíriť množstvo pamäte. Toto stále používa malloc a realloc. Pri vykonávaní rovnakej situácie v jazyku C ++ musí programátor vytvoriť nový blok pamäte s novým operátorom. Nová pamäť musí mať upravenú veľkosť a bude skopírovaná cez dáta z pôvodnej vyrovnávacej pamäte. Pôvodná medzipamäť sa musí po kópii odstrániť. Pre programátora to môže byť pomalý proces.

Operátor new má vplyv na funkciu malloc vrátením presného typu údajov, zatiaľ čo funkcia vracia neplatnosť *. Funkciu malloc tiež nemožno preťažiť v porovnaní s novou obsluhou, kde je možné preťaženie. Ďalšou vlastnosťou nového operátora je to, že v porovnaní s funkciou malloc existuje menšia šanca na chyby u operátora. Toto je považované za plus pre programátorov, najmä ak píšu veľa kódov alebo pracujú na kóde v prísnom časovom pláne. Funkciu malloc a free je možné použiť v C ++, ale nemožno ju použiť priamo. Namiesto toho je vhodné použiť nové a odstrániť.

Zhrnutie:

1. Malloc je funkcia, zatiaľ čo nová je operátorom.

2. Nový je špecifickou črtou jazyka C ++, zatiaľ čo malloc sa používa v jazyku C.

3. Operátor nový nasleduje s „vymazaním“, zatiaľ čo funkcia malloc je „zadarmo“.

4. Funkcia malloc je funkcia knižnice pre jazyk C, zatiaľ čo nový operátor predstavuje konštrukciu na úrovni jazyka z jazyka C ++.