Рубрики

malloc () против нового

Ниже приведены различия между malloc () и оператором new. :

  1. Вызов конструкторов: новые вызовы конструкторов, тогда как malloc () — нет. Фактически примитивные типы данных (char, int, float и т. Д.) Также могут быть инициализированы с новыми. Например, ниже программа печатает 10.

    #include<iostream>

    using namespace std;

    int main()

    {

        // Инициализация с новым ()

        int *n = new int(10); 

        cout << *n;

        getchar();

        return 0;

    }

    Выход:

    10
    
  2. оператор против функции: new является оператором, а malloc () является функцией.
  3. тип возвращаемого значения : new возвращает точный тип данных, тогда как malloc () возвращает void *.
  4. Условие сбоя: в случае сбоя malloc () возвращает NULL, где new генерирует исключение bad_alloc.
  5. Память: в случае нового память выделяется из свободного хранилища, где, как и в malloc (), выделение памяти выполняется из кучи.
  6. Переопределение: нам разрешено переопределять новый оператор, поскольку мы не можем переопределить функцию malloc () легально.
  7. Размер: Требуемый размер памяти рассчитывается компилятором для нового, где мы должны вручную рассчитать размер для malloc ().
  8. Размер буфера: malloc () позволяет изменить размер буфера с помощью realloc (), а new — нет.
newmalloc
calls constructordoesnot calls constructors
It is an operatorIt is a function
Returns exact data typeReturns void *
on failure, ThrowsOn failure, returns NULL
Memory allocated from free storeMemory allocated from heap
can be overriddencannot be overridden
size is calculated by compilersize is calculated manually

Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное в вышеприведенном посте или хотите поделиться дополнительной информацией по обсуждаемой выше теме.

Рекомендуемые посты:

malloc () против нового

0.00 (0%) 0 votes