Использование malloc в сравнении с новым - PullRequest
1 голос
/ 08 декабря 2010

Я давно пользуюсь pointer = new type[size] и только недавно обнаружил malloc.

Есть ли техническая разница между malloc и new?Если да, каковы преимущества использования одного над другим?

Ответы [ 2 ]

3 голосов
/ 08 декабря 2010

malloc - это вызов функции, новым в этом случае является выражение.

Разница в том, чтоnew выделит память и создаст все элементы этого массива с помощью конструктора по умолчанию.malloc просто возвращает кусок неинициализированной памяти.

Более того, ::operator new сгенерирует std::bad_alloc или новый обработчик, если он был зарегистрирован.

Стандартная библиотека определяет новыйкоторый принимает дополнительный параметр nothrow, который возвращает указатель 0 в случае неудачного размещения.

int *x = new(std::nothrow) int[20]; // include <new>, return 0 on failure
2 голосов
/ 08 декабря 2010

Вы можете найти FAQ с вашим вопросом здесь

И еще один хороший ответ: В каких случаях я использую malloc против new?

...