Разница между глобальным оператором new и malloc

C ++ имеет несколько функций для получения динамического хранилища, большинство из которых отличаются фундаментальным образом. Еще несколько обычно добавляются ОС.

Два из них представляют особый интерес из-за их портативности и сходства:malloc а также::operator new.

Есть ли какие-либо различия (в отношении стандарта и реализации) между глобальнымvoid* operator new(size_t, ::std::nothrow&) а такжеvoid* malloc(size_t)?

Поскольку кажется, что я имею в виду некоторую путаницу, рассмотрим следующие два вызова:

void* p = ::std::malloc(10);
void* q = ::operator new(10, ::std::nothrow);

Очевидное и тривиальное отличие состоит в том, как освободить память:

::std::free(p);
::operator delete(q);

Примечание: этот вопрос не является дубликатом, например,В чем разница между new / delete и malloc / free? поскольку речь идет об использованииГлобальный operator new это фактически не выполняет никаких вызовов ctor.

Ответы на вопрос(3)

Ваш ответ на вопрос