当尝试分配内存失败时会抛出任何异常吗?
我刚刚了解到Android支持例外情况。
答案 0 :(得分:4)
我下载了ndk并在docs文件夹中找到了这个,CPLUSPLUS-SUPPORT.HTML。
予。 C ++ Exceptions支持:
NDK工具链支持C ++异常,因为NDK r5,但是所有的C ++ 默认情况下,使用-fno-exceptions支持编译源代码 与先前版本的兼容性原因。
要启用它,请使用'-fexceptions'C ++编译器标志。这可以做到 将以下内容添加到Android.mk中的每个模块定义中:
LOCAL_CPPFLAGS += -fexceptions
更简单地说,在Application.mk中添加一行,设置即可 自动应用于您项目的所有NDK模块:
APP_CPPFLAGS += -fexceptions
注意:过时的“arm-eabi-4.4.0”工具链是向后提供的 与此NDK的兼容性不支持例外!
因此,只要使用'-fexceptions'编译应用程序,就可以支持异常。所以我的理解是,使用-fexceptions编译的代码会在分配内存失败时抛出std :: bad_alloc。
答案 1 :(得分:0)
我不认为Android支持例外。如果最近更改了这个,您可以将链接发布到您的参考文章吗?我的印象是,使用new运算符的失败分配将在Android上返回空指针。
在这种情况下,如果您在最后使用(nothrow)
,则应遵守其默认分配行为,并获得与Android上预期相同的结果。