Różnica między Malloc a New

Malloc vs New
Jednym z najczęstszych pytań podczas rozmowy przy zatrudnianiu programisty jest to, aby wnioskodawca / programista wyjaśnił różnice między malloc a nowym. Zarówno malloc, jak i nowy istnieją w dziedzinie języka komputerowego i często są używane przez programistów komputerowych do dynamicznego przydzielania pamięci.

Podstawowe różnice między nimi polega na tym, że malloc istnieje w języku C, podczas gdy nowy jest specyficzną cechą języka C ++. Malloc jest również funkcją (która dla programistów wymaga czasu na wykonanie), podczas gdy nowa jest programem operatora (który skraca czas wykonywania). Jest to korzyść nowego operatora, ponieważ programiści wykonujący programowanie w czasie rzeczywistym muszą wybrać najszybszą metodę.

Nowy operator jest bezpieczny dla typu w przeciwieństwie do funkcji malloc.
Funkcja malloc jest funkcją biblioteki dla języka C. Wystarczy przydzielić pamięć i zwrócić do niej wskaźnik. Z drugiej strony operator new jest konstrukcją na poziomie języka, a jego zadaniem jest tworzenie instancji obiektu przez przydzielanie pamięci i wywoływanie odpowiednich konstruktorów. Inną różnicą funkcji malloc od operatora new jest to, że malloc wymaga rzutowania tekstu podczas deklaracji, podczas gdy pierwszy nie. Ponadto funkcja malloc używa słowa „wolny”, aby wyczyścić pamięć, podczas gdy „operator” jest używany w nowym operatorze do podobnego celu.

Oba mają także różne sposoby radzenia sobie z awarią i wyczerpaniem pamięci. Jeśli funkcja malloc zawiedzie, zwraca wskaźnik NULL. Operator new nigdy nie zwraca wskaźnika NULL, ale wskazuje błąd, zgłaszając wyjątek. Jest to zaleta dla nowego operatora, ponieważ programista nie musi sprawdzać zwracanego wskaźnika za każdym razem, gdy wywołuje nowy, ani programista nie przegapi takiego wyjątku.

Funkcja malloc nie konstruuje obiektu (zwanego konstruktorem obiektu), ale robi to operator new. Kolejną zaletą nowego rozwiązania jest to, że operator może być przeciążony, podczas gdy funkcja malloc nie. Operator new wymaga określonej liczby obiektów do przydzielenia, podczas gdy funkcja malloc wymaga podania całkowitej liczby bajtów do przydzielenia.

Pamięć można również zmienić rozmiar lub ponownie przydzielić za pomocą funkcji malloc przy użyciu ponownego przydziału. Jednak operator nowy nie może wykonać tej funkcji i uznaje ją za jedną z głównych wad operatora. Kolejną zaletą funkcji malloc nad operatorem jest to, że malloc może szybko zwiększyć ilość pamięci. Nadal używa Malloc i Realloc. Robiąc tę ​​samą sytuację w języku C ++, programista musi utworzyć nowy fragment pamięci z operatorem nowym. Nowa pamięć musi mieć zmodyfikowany rozmiar i zostanie skopiowana na dane z oryginalnego bufora. Bufor oryginalny należy usunąć po skopiowaniu. Może to być powolny proces dla programisty.

Nowy operator ma przewagę nad funkcją malloc, zwracając dokładny typ danych, podczas gdy funkcja zwraca void *. Funkcja malloc również nie może być przeciążona w porównaniu do operatora nowego, w którym możliwe jest przeciążenie. Kolejną cechą nowego operatora jest to, że istnieje mniejsze prawdopodobieństwo popełnienia błędu przez operatora niż funkcja malloc. Jest to uważane za plus dla programistów, szczególnie jeśli piszą wiele kodów lub pracują nad kodem według napiętego harmonogramu. Funkcji malloc i free można używać w C ++, ale nie można jej używać bezpośrednio. Wskazane jest użycie zamiast tego nowego i usunięcie.

Streszczenie:

1. Malloc jest funkcją, podczas gdy nowy jest operatorem.

2. Nowością jest specyficzna funkcja języka C ++, podczas gdy malloc jest używany w języku C..

3. Nowy operator dodaje „usuń”, podczas gdy funkcja malloc idzie w parze z „bezpłatnym”.

4. Funkcja malloc jest funkcją biblioteki dla języka C, podczas gdy operator new jest konstrukcją na poziomie języka z języka C ++.