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