Ausnahme bei new

jokey2

Erfahrenes Mitglied
Hallo Gemeinde!

Nach dem C++ Standard sollte new eine bad_alloc-Exception auslösen, wenn es fehlschlägt. bei VC++ wird jedoch im Allgemeinen einfach ein Nullpointer zurückgegeben.
Wie kann ich auch im VC++ sicherstellen, daß da die Exception ausgelöst wird?
Muß ich mir da einen eigenen new-Handler schreiben?
 
Ich glaube, da war was wie
Code:
MyObject* = new TMyObject();
if(!MyObject) 
{
  throw MyException();
}

Also im Prinzip nach dem new abfragen, ob der Nullpointer zurückkam oder nicht.
 
Das wäre ja was in der Art 'eigener new-Handler'.
Aber laut C++Standard sollte das das new schon selber machen. Nach jedem new den Zeiger selber auf 0 überprüfen ist nämlich nervig. :(
 
Welches VC hast du denn da? AFAIK ist das in 2002 und 2003 standardmässig drin. Damit da keine Exceptions (igitt) geworfen werden, muss das explizit angegeben werden:

char* pData = new( std::nothrow )char[5000000];

Dann, und eigentlich nur dann kommt auch NULL zurück.

Ich kann mir vorstellen, dass die MFC-eigene Überladung von new und delete bei der Debug-Konfiguration das evtl. nicht macht.
 
Zurück