gpt4 book ai didi

c++ - 对于 "-fno-exceptions", "new T"会发生什么?

转载 作者:IT老高 更新时间:2023-10-28 13:24:16 31 4
gpt4 key购买 nike

我想知道,如果我使用 -fno-exceptions 选项编译我的程序以禁用异常处理,new T 是否仍会抛出 bad_alloc ?

或者编译器(GCC 和 clang 支持该选项)是否会将 new T 的使用隐式转换为 new (nothrow) T

最佳答案

按照我的理解,operator new 是由 libstdc++ 定义的。如果您现在使用 -fno-exceptions 编译自己的代码,则无法捕获任何异常,但您仍将链接到会引发异常的普通版本的 libstdc++。

所以是的,new T 会抛出异常,即使使用 -fno-exception

但是,如果您也使用 -fno-exception 编译 libstdc++,情况会有所不同。现在,new T 不能抛出异常,但是,如果我读到 the libstdc++ manual right它将改为调用 abort()

看来,如果您希望您的 new T 在失败时返回 NULL,唯一的方法是明确指定 nothrow...

关于c++ - 对于 "-fno-exceptions", "new T"会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6049563/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com