c++ - 在 C++ OS X 中分配大空间

标签 c++ macos exception

我正在学习 C++ 中的异常,我正在尝试这样做:

int main(int argc, char* argv[]) {
    double *p_x;
    try {
        p_x = new double[100000000000000];
        delete p_x;
    } catch (bad_alloc& ex) {
        cout << "Memory not allocated !!\n";
    }
    return 0;
}

异常被捕获,但在执行此代码时打印了其他内容。输出如下:

Memory not allocated !!
Test9(13814) malloc: *** mmap(size=800000000000000) failed (error code=12)
*** error: can't allocate region
*** set a breakpoint in malloc_error_break to debug

我不知道它是否与 g++ 的版本有某种关系,或者可能与 OS X 相关。 我的意思是,该程序正在捕获异常,但其他内容是什么?

最佳答案

是glibc相关的。您可以使用 mallopt(3) 命令禁用这些消息:

mallopt(M_CHECK_ACTION, 0);

关于c++ - 在 C++ OS X 中分配大空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13305063/

相关文章:

c++ - 如何使这个非标准 union ISO C++ 兼容,同时保持使用的便利性?

C++ 错误 : no matching function for call to 'regex_match()'

JAVA - 'Provider "C“未安装”错误无法修复 :(

macos - Mac CGDataConsumerCreateWithFilename : failed to open `.myfile.pdf' for writing: Operation not permitted

java - 为什么当我退出程序时它警告我套接字已关闭?

c++ - 如果在初始化静态局部变量之前发生异常会怎样?

C++ 程序因结构声明数组而崩溃

c++ - 为什么结构体的 sizeof 不等于每个成员的 sizeof 之和?

macos - 从菜单项调用工作表

python - PyInstaller 打包的 PyQt5 应用程序在 MacOS 上使用了错误的样式