Unterschied zwischen Global Operator New und Malloc

C ++ verfügt über mehrere Funktionen zum Abrufen von dynamischem Speicher, von denen sich die meisten grundlegend unterscheiden. Einige weitere werden normalerweise vom Betriebssystem hinzugefügt.

Zwei davon sind aufgrund ihrer Portabilität und Ähnlichkeit von besonderem Interesse:malloc und::operator new.

Gibt es Unterschiede (bezüglich des Standards und der Implementierung) zwischen der globalenvoid* operator new(size_t, ::std::nothrow&) undvoid* malloc(size_t)?

Da es Verwirrung zu geben scheint, über was ich spreche, betrachten Sie die folgenden zwei Aufrufe:

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

Der offensichtliche und unbedeutende Unterschied besteht darin, wie die Zuordnung des Speichers aufgehoben wird:

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

Hinweis: Diese Frage ist kein Duplikat von z.Was ist der Unterschied zwischen new / delete und malloc / free? da geht es um die verwendung derglobal operator new das führt eigentlich keine ctor-aufrufe aus.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage