【发布时间】:2014-07-03 20:33:27
【问题描述】:
我正在尝试通过以下函数捕获内存不足异常:
void allocMemory(buffer& thebuf, size_t size)
{
try
{
thebuf = buffer(size); // new char[] here
}
catch(bad_alloc& ex)
{
exception handling... // print some information
exit(1);
}
}
处理应该显示一些信息并关闭程序。这在 Windows 上工作正常,但在 Linux 上,程序只是直接在终端上用“Killed”关闭。似乎 OOM 杀手在捕获异常之前杀死了我的程序。
这正常吗?
如何在 Linux 上捕获内存不足异常?
附:我在 ubuntu 12.04 64 位上进行测试,仅使用 4GB 内存进行测试,没有交换空间,语言是 C++。此外,如果我一次新建大量内存,该功能确实可以在 Linux 上运行。但是,如果我每次都更新一点(例如:在一个循环中),程序最终将在终端上以“Killed”关闭
任何帮助将不胜感激。
【问题讨论】:
标签: c++ exception out-of-memory ubuntu-12.04