我想知道,处理内存不足错误的好方法是什么.
void SomeTask()
{
try
{
SomeObj obj = new SomeObj();
}
catch( std::bad_alloc& )
{
// What should be done here?
}
// ... more code ...
}
Run Code Online (Sandbox Code Playgroud)
我觉得默默地返回是错误的,因为程序可能在不确定的状态下运行.那么,这里应该发生什么,我应该让程序崩溃,还是有更好的选择呢?该程序作为服务运行,因此我不能只弹出错误消息.我想如果有足够的内存可以记录一些东西可能是可能的.但是,我只是想知道,在这种情况下你认为我该怎么做?
谢谢.
因为它是一个服务,我会写一个错误到系统消息日志.在Windows中,您可以使用Windows事件日志API.除非您在文档中另有说明,否则这可能是系统管理员希望看到失败报告的地方.
此外,在大多数C++编译器中,std :: bad_alloc()已取代失败堆分配的空返回值.
-PaulH