Разлика между Малок и Нова

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

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

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

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

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

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

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

Резюме:

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

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

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

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