Ich portiere eine mittelgroße Anwendung von C nach C++. Ausnahmen werden nicht behandelt, und das sollte sich nicht ändern.Vermeiden Sie std :: bad_alloc. new sollte einen Nullzeiger zurückgeben
Mein (falsches!) Verständnis von C++ war (bis ich es gestern auf die harte Tour gelernt habe), dass der (default) new-Operator einen NULL-Zeiger im Falle eines Allokationsproblems zurückgibt. Dies galt jedoch nur bis 1993 (oder so). Heutzutage wird eine std :: bad_alloc-Ausnahme ausgelöst.
Ist es möglich, zu dem alten Verhalten zurückzukehren, ohne alles neu zu schreiben, um bei jedem einzelnen Anruf std :: nothrow zu verwenden?
Das könnte Sie auch interessieren: http://stackoverflow.com/questions/550451/will-new-return-null-in-any-case – Naveen
Bite the bullet. Fixe deinen Code, um std :: nothrow zu verwenden. awk und ein paar reguläre Ausdrücke werden dir 90% des Weges dorthin bringen. –
+1 für wirklich aktuelle Sache für viele Menschen, obwohl ich dagegen bin, solche Dinge zu tun (und ich antwortete unten warum). –