La façon dont je le comprends, operator new
est défini par libstdc++. Maintenant, si vous compilez votre propre code avec -fno-exceptions
, vous ne pouvez pas attraper toutes les exceptions, mais vous serez toujours de se lier à la version normale du libstdc++, qui ne lève une exception.
Donc oui, new T
lèvera une exception, même avec -fno-exception
.
Toutefois, si vous avez compilé libstdc++ avec -fno-exception
ainsi, les choses deviennent différentes. Maintenant, new T
impossible de lever une exception, mais, si je l'ai lu à la bibliothèque libstdc++ manuel de droit qu'il appellera abort()
à la place.
Il semble que, si vous voulez que votre new T
à retourner la valeur NULL en cas d'échec, le seul moyen est de spécifier explicitement nothrow
...