我想知道,什么是处理内存不足错误的好做法。处理内存不足错误的最佳做法是什么?
void SomeTask()
{
try
{
SomeObj obj = new SomeObj();
}
catch(std::bad_alloc&)
{
// What should be done here?
}
// ... more code ...
}
我觉得自己默默地返回是错误的,因为程序可能运行在一个不确定的状态。那么,这里应该发生什么,我应该离开程序崩溃,还是有更好的选择?该程序作为服务运行,所以我不能只弹出错误消息。我想如果有足够的内存来做这件事,可能会记录一些东西。但是,我只是想知道,在这种情况下,你认为我应该怎么做?
谢谢。
首先,不要测试null。抓住'std :: bad_alloc'。 – 2010-12-20 17:13:10
好的,谢谢,明白了。 – 2010-12-20 17:20:06
其次,除非你能解决它,否则不要捕获bad_alloc。这在分配点几乎没有任何地方。如果这是由主事件循环启动的某种服务,则允许该服务退出并一直回退到事件循环。如果这是普通应用程序流程的一部分,那么通常的结果就是让抛出导致应用程序终止。捕获并记录main()中的所有异常,然后重新抛出异常。 – 2010-12-20 18:27:46