3

我正在学习 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 有关。我的意思是,程序正在捕获异常,但其他的东西是什么?

4

1 回答 1

3

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

mallopt(M_CHECK_ACTION, 0);
于 2012-11-09T09:22:14.317 回答