经过多年的编程,我还没有遇到过合理的 malloc 或 new 会失败的情况(可能是因为我的 malloc 真的很合理),尽管我总是检查它。
就我而言,应用程序应该(我希望)通过适当的日志条目优雅地关闭。在这种情况下你会怎么做?听到你的方法很有趣——你是等待资源还是关闭商店?
经过多年的编程,我还没有遇到过合理的 malloc 或 new 会失败的情况(可能是因为我的 malloc 真的很合理),尽管我总是检查它。
就我而言,应用程序应该(我希望)通过适当的日志条目优雅地关闭。在这种情况下你会怎么做?听到你的方法很有趣——你是等待资源还是关闭商店?
我通常会尽可能优雅地关闭我的程序,并简单地记录错误消息。在 C++ 中,我通过一个catch
for std::bad_alloc
in来做到这一点main()
。到catch
执行时,堆栈展开调用的析构函数应该已经释放了一些内存,因此日志记录本身不太可能失败。我避免在该日志记录代码中分配内存(例如通过使用char *
字符串而不是std::string
字符串),以进一步减少日志记录失败的机会。
如果动态分配失败,您几乎无能为力——几乎没有编写任何操作来处理这种情况。如果它失败了,那么就让应用程序崩溃。