在Android上,C++运算符new和new []抛出std :: bad_alloc吗?

Ant*_*ton 8 c++ android exception new-operator android-ndk

当尝试分配内存失败时,是否会抛出任何异常?

我刚刚了解到Android支持异常.

Ant*_*ton 4

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

I. C++ 异常支持:

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

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

LOCAL_CPPFLAGS += -fexceptions
Run Code Online (Sandbox Code Playgroud)

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

APP_CPPFLAGS += -fexceptions
Run Code Online (Sandbox Code Playgroud)

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

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