Diferença entre operador global new e malloc

O C ++ possui várias funções para adquirir armazenamento dinâmico, a maioria das quais difere de alguma maneira fundamental. Vários outros são geralmente adicionados pelo sistema operacional.

Dois deles são de interesse especial devido à sua portabilidade e semelhança:malloc e::operator new.

Existem diferenças (por exemplo, o padrão e a implementação) entre os padrões globaisvoid* operator new(size_t, ::std::nothrow&) evoid* malloc(size_t)?

Como parece haver alguma confusão sobre o que estou falando, considere as duas chamadas a seguir:

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

A diferença óbvia e trivial é como desalocar a memória:

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

Nota: esta pergunta não é uma duplicata, por ex.Qual é a diferença entre new / delete e malloc / free? já que fala sobre o uso doglobal operator new que na verdade não realiza nenhuma chamada de ctor.

questionAnswers(3)

yourAnswerToTheQuestion