Разлика между Malloc и New

Malloc срещу New
Един от най-често срещаните въпроси за интервю при наемане накомпютърпрограмистът е за кандидата / компютърния програмист да обясни разликите между malloc и new. Както malloc, така и new съществуват в сферата на компютърния език и често се използват от компютърните програмисти за динамично разпределение на паметта.

Основните разлики между двете са, че malloc съществува в C-езика, докато new е специфична характеристика на езика C ++. Malloc също е функция (която за програмистите изисква някоивремеза изпълнение), докато new е операторска програма (която намалява времето за изпълнение). Това е предимство на оператора new, защото програмистите, които правят програмиране в реално време, трябва да изберат най-бързия метод за използване.



Operator new е безопасен за типа, за разлика от функцията malloc.
Функция malloc е библиотечна функция за C-езика. Всичко, което прави, е да разпредели паметта и да върне указател към нея. От друга страна, операторът new е конструкция на езиково ниво и неговата работа е да създаде екземпляр на обект чрез разпределяне на паметта и извикване на подходящите конструктори. Друга разлика в функцията malloc от оператора new е, че malloc изисква типиране по време на деклариране, докато първата не. Също така, функцията malloc използва думата „безплатно“, за да изчисти паметта, докато „delete“ се използва в оператор new за подобна цел.

Двамата имат и различни начини за справяне с неуспеха и изтощаването на паметта. Ако функцията malloc не успее, тя се връща с NULL указател. Операторът new никога не връща NULL указател, но показва неуспеха, като вместо това хвърля изключение. Това епредимствоза оператора new, тъй като компютърният програмист не трябва да проверява върнатия указател всеки път, когато извика нов, нито компютърният програмист ще пропусне такова изключение.

Функцията malloc не конструира обект (наречен конструктор на обект), но операторът new го прави. Друго предимство на new е, че операторът може да бъде претоварен, докато функцията malloc не може. Operator new изисква определен брой обекти, които да се разпределят, докато функцията malloc изисква посочване на общия брой байтове, които да се разпределят.

Паметта също може да бъде преоразмерена или преразпределена с помощта на функцията malloc с помощта на realloc. Операторът new обаче не може да изпълнява тази функция и я смята за един от основните недостатъци на оператора. Друго предимство на функцията malloc пред оператора new е, че malloc може бързо да разшири обема на паметта. Това все още използва malloc и realloc. Когато прави същата ситуация в езика C ++, програмистът трябва да създаде нова порция памет с оператор new. Новата памет трябва да има модифициран размер и ще бъде копирана върхуданниот оригиналния буфер. Оригиналният буфер трябва да бъде изтрит след копирането. Това може да е бавен процес за програмист.

Операторът new има лост над функцията malloc, като връща точнотоданнитип, докато функцията връща void *. Функцията malloc също не може да бъде претоварена в сравнение с оператора new whereпретоварванее възможно. Друга характеристика на оператора new е, че има по-малко шансове за грешки с оператора в сравнение с функцията malloc. Това се счита за плюс за програмистите, особено ако те пишат многокодовеили работа по код по строг график. Функцията malloc и free може да се използва в C ++, но не може да се използва директно. Препоръчително е вместо това да използвате нов и да изтриете.

Резюме:

1. Malloc е функция, докато new е оператор.

2. New е специфична характеристика на езика C ++, докато malloc се използва в C-езика.

3. Операторът нов следва с „изтриване“, докато функцията malloc върви с „безплатно“.

4. Функция malloc е библиотечна функция за C-езика, докато операторът new е конструкция на езиково ниво от езика C ++.