2011-07-09 108 views
0

经过多年的编程,我没有合理的malloc或new失败的情况(可能是因为我的malloc是truth合理的),但我总是检查它。资源获取失败处理

在我的情况下,应用程序应该优雅地(我希望)关闭一个适当的日志条目。你会在这种情况下做什么?听到你的方法很有趣 - 你是否等待资源或关闭商店?

+1

它完全取决于应用程序,不是吗?一旦你解决了你的用例,适当的机制应该是显而易见的。这似乎是对我的一个毫无意义的民意调查... –

+0

Gotta agree-这听起来像一个主观的民意调查,甚至没有特定于C或C++的语言。 – Puppy

+0

我想知道人们在这种情况下的想法。是的,c,C++只是因为我在它编程 – Ulterior

回答

0

如果动态分配失败,几乎没有什么可以做的 - 几乎没有任何操作可以处理这种情况。如果失败了,那就让应用程序崩溃。

+0

与消息在一个瓶子和船长离开最后的东西或只是崩溃? – Ulterior

+0

@ user757808:当你不能分配瓶子时,你怎么能在瓶子里留言?您的I/O库不会,也可能无法针对给定的平台,被设计为在没有动态分配的情况下运行。 – Puppy

+0

@DeadMG - 也许看看你的核心转储? – KevinDTimm

1

我通常会尽可能优雅地关闭程序,简单记录错误消息。在C++中,我通过在main()中为std::bad_alloc设置catch来实现此目的。在执行catch时,由堆栈展开调用的析构函数应该释放了一些内存,因此日志本身不太可能失败。我避免在该日志记录代码中分配内存(例如,使用char *字符串而不是std::string字符串),以进一步减少日志记录失败的可能性。