处理内存不足错误的最佳做法是什么?

Sco*_*ham 1 c++ memory

我想知道,处理内存不足错误的好方法是什么.

void SomeTask()
{
   try
   {
      SomeObj obj = new SomeObj();
   }
   catch( std::bad_alloc& )
   {
      // What should be done here?
   }


   // ... more code ...
}
Run Code Online (Sandbox Code Playgroud)

我觉得默默地返回是错误的,因为程序可能在不确定的状态下运行.那么,这里应该发生什么,我应该让程序崩溃,还是有更好的选择呢?该程序作为服务运行,因此我不能只弹出错误消息.我想如果有足够的内存可以记录一些东西可能是可能的.但是,我只是想知道,在这种情况下你认为我该怎么做?

谢谢.

Pau*_*ulH 5

因为它是一个服务,我会写一个错误到系统消息日志.在Windows中,您可以使用Windows事件日志API.除非您在文档中另有说明,否则这可能是系统管理员希望看到失败报告的地方.

此外,在大多数C++编译器中,std :: bad_alloc()已取代失败堆分配的空返回值.

-PaulH