Logo pl.removalsclassifieds.com

Różnica między Malloc a New (z tabelą)

Spisu treści:

Anonim

Malloc to funkcja w języku C, podczas gdy nowość jest podstawową funkcją w C++. Malloc jest zasadniczo funkcją standardową, podczas gdy nowy jest operatorem. Malloc nie powinien być używany w C++ bez istotnego powodu. New/delete nigdy nie powinno być mieszane z malloc/free. W przeciwieństwie do malloc, new nie wymaga rozmiaru operatora.

Malloc kontra nowy

Główna różnica między malloc() i new() polega na tym, że pierwsza z nich jest standardową funkcją C, a druga jest operatorem, którego można używać tylko w C++. Malloc może i powinien być używany w C++ tylko wtedy, gdy istnieje ku temu dobry powód. Nowe pozwala na nadpisanie, ale malloc nie zezwala na to legalnie.

Malloc wymaga znajomości dokładnego rozmiaru operatora, aby dowiedzieć się, jaki rozmiar pamięci ma do przydzielenia. Malloc nie jest również w stanie nawiązać połączenia z konstruktorem. Wraca do NULL, gdy wykryje, że brakuje pamięci.

Nowy operator nie potrzebuje żadnych wcześniejszych informacji dotyczących dokładnej wielkości operatora, aby przydzielić miejsce na pamięć. Nowy operator może również wywołać konstruktora obiektu. Wiadomo, że wywołuje wyjątek, gdy brakuje pamięci.

Porównanie między Malloc i New w formie tabelarycznej

Parametry porównania

Malloc

Nowy

Miejsce w języku Malloc jest częściej używany w C. Rzadko jest używany w C++. Nowe jest używane tylko w C++.
Zwroty Wraca do pustki. Nowe wraca do właściwego typu.
Rozmiar W malloc rozmiar należy obliczyć ręcznie W New wymagany rozmiar kompilatora jest obliczany przez kompilator
Nadrzędny Funkcji malloc nie można legalnie obejść. Nowy operator daje możliwość nadpisania.
Rodzaj Malloc jest standardową funkcją C. Używa operatorów takich jak ==, += itp.
Zachowanie w przypadku braku pamięci Malloc powraca do wartości NULL, gdy brakuje pamięci. New wywołuje wyjątek podczas braku pamięci.
Cofanie przydziału Malloc() powinien być dopasowany do free(). New() powinno być dopasowane do delete().
Przydziela pamięć na Prawie wszystko. Tylko dla tablic, obiektów i struktur.

Co to jest Malloc?

Malloc() to standardowa funkcja biblioteczna w C, która oznacza alokację pamięci. Służy do dynamicznego przydzielania bloku pamięci o określonym rozmiarze. Rozmiar pamięci jest alokowany w bajtach. Zwykle zwraca wskaźnik typu void, ponieważ zawiera pewną wartość śmieci. Nie inicjuje pamięci w momencie wykonywania. Funkcja Malloc powinna być używana w C++ tylko wtedy, gdy jest bardzo potrzebna, w przeciwnym razie jej użycie powinno być ograniczone tylko do C. Gdy malloc wykryje brak pamięci, natychmiast powraca do wartości NULL. Nie wykonuje inicjalizacji pamięci. Zawiera 2 argumenty. Malloc() musi być zawsze dopasowany do free(). Rozmiar pamięci w malloc musi być obliczony ręcznie. Wymaga wcześniejszej wiedzy na temat rozmiaru operatora, aby przydzielić rozmiar pamięci. Nie jest w stanie wywołać konstruktora obiektu. Funkcji malloc można użyć do alokacji pamięci na prawie wszystko. Funkcja Malloc nie pozwala na legalne nadpisanie. Malloc działa wolniej niż nowy operator w C++, ponieważ operator jest zawsze szybszy niż funkcja.

Składnia:- ptr = (typ rzutu*) malloc(rozmiar);

Co nowego?

New to operator w C++, którego nie można używać w C. Nowy operator może wywołać konstruktora obiektu i zainicjować pamięć. Konstruktor jest wywoływany dopiero po przydzieleniu pamięci. Rozmiar pamięci jest obliczany przez kompilator. Wraca do właściwego typu. Może używać operatorów takich jak ==, += itd. Nowy operator alokuje pamięć tylko dla tablic, obiektów i struktur. W C++ nowy operator jest stosowany do wysuwania żądania przydziału pamięci na stercie. Pod warunkiem, że dostępna jest wystarczająca ilość pamięci, nowy operator inicjuje ją, a następnie zwraca nowo przydzieloną i uformowaną pamięć do zmiennej wskaźnika. New() zawsze powinien być dopasowany do delete(). Ten operator jest używany do dynamicznej alokacji pamięci, konstrukcji obiektów i niszczenia. Pamięć jest przydzielana dla obiektów z puli zwanej wolnym magazynem. Działa znacznie szybciej niż malloc, ponieważ jest operatorem, a nie funkcją.

Składnia:- zmienna-wskaźnika = nowy typ danych;

Główne różnice między Malloc a New

Wniosek

Malloc() to standardowa funkcja w C, która jest również używana w C++, gdy jest to konieczne. New() to operator, którego użycie jest ograniczone tylko do C++. Malloc() musi być zgodny z free() i new() z delete(), aby działał poprawnie. Te dwie rzeczy nigdy nie powinny się zamieniać. Nowy jest znacznie bardziej zaawansowany niż malloc, ponieważ nie wymaga wcześniejszej znajomości rozmiaru operatora, aby przydzielić miejsce na pamięć, ale wymaga tego funkcja malloc. Funkcja malloc nie może wywołać konstruktora obiektu, który nowy operator jest w stanie to zrobić. Wiadomo, że funkcja malloc alokuje pamięć na prawie wszystko, ale nowy operator alokuje pamięć tylko na tablice, obiekty i struktury w C++. Chociaż malloc jest średnio znacznie szybszy niż nowy, prędkość może się różnić w zależności od indywidualnego wywołania. W przypadku braku pamięci malloc powraca do wartości NULL, podczas gdy new zgłasza wyjątek w przypadku błędu.

Bibliografia

Różnica między Malloc a New (z tabelą)