我正在学习 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/