Bei einer standardkonformen C ++ Implementierung, nein. Die normale Form von new
gibt niemals NULL
zurück; Wenn die Zuweisung fehlschlägt, wird eine Ausnahme std::bad_alloc
ausgelöst (das Formular new (nothrow)
wirft keine Ausnahmen und gibt NULL
zurück, wenn die Zuweisung fehlschlägt).
Auf einigen älteren C ++ - Compilern (insbesondere solchen, die vor der Standardisierung der Sprache veröffentlicht wurden) oder in Situationen, in denen Ausnahmen explizit deaktiviert sind (z. B. einige Compiler für eingebettete Systeme), kann new
bei einem Fehler NULL
zurückgeben . Compiler, die dies tun, entsprechen nicht dem C ++ - Standard.
Nein, new
löst std::bad_alloc
bei fehlgeschlagenem Zuweisen aus. Verwenden Sie stattdessen new(std::nothrow) Car
, wenn Sie keine Ausnahmen wünschen.
Standardmäßig gibt C ++ eine std :: bad_alloc Ausnahme aus, wenn der neue Operator fehlschlägt. Daher ist die Überprüfung auf NULL nicht erforderlich, es sei denn, Sie haben die Verwendung der Ausnahme explizit deaktiviert.
Ich habe das schon oft gesehen und habe mich gewundert, warum neue Speicherausnahmen ausgelöst werden. Ich denke, es kommt von Entwicklern, die früher in C gearbeitet haben und jetzt C ++ sind.
Tags und Links c++ new-operator