C ++运算符是新的还是新的[]抛出std :: bad

尝试分配内存失败时是否会引发异常?

我最近才知道Android中支持异常。


我下载了ndk,并在docs文件夹CPLUSPLUS-SUPPORT.HTML中找到了它。

I. C ++异常支持:

NDK工具链支持C ++异常,因为NDK r5,所有C ++源默认情况下都支持-fno-exceptions支持编译,出于兼容性原因与以前的版本。

要启用它,请使用'-fexceptions'C ++编译器标志。 这可以通过将以下内容添加到Android.mk中的每个模块定义来完成:

LOCAL_CPPFLAGS += -fexceptions

更简单地说,将一行添加到Application.mk中,该设置将自动应用于所有项目的NDK模块:

APP_CPPFLAGS += -fexceptions

注意:为了与此NDK向后兼容而提供的废弃“arm-eabi-4.4.0”工具链不支持异常!

因此,只要应用程序使用'-fexceptions'进行编译,似乎就会支持异常。 所以我的理解是,使用-fexceptions编译的代码在分配内存失败时会抛出std :: bad_alloc。


我不认为Android支持异常。 如果最近这个变化可以发布到你的参考文章的链接? 我觉得在新的操作符下,一个失败的分配会在Android上返回一个空指针。

在这种情况下,如果您在自己的末端使用(nothrow) ,则应该遵守其默认分配行为,并在Android上获得与预期相同的结果。

http://www.cplusplus.com/reference/std/new/nothrow/

链接地址: http://www.djcxy.com/p/54117.html

上一篇: Do the C++ operators new and new[] throw std::bad

下一篇: Get Facebook login status and signed request without JS SDK