在开发手机App时(内存有限2Mb以下),malloc()
失败时,我添加了回调向UI报告错误,但是后续代码仍然需要检查返回值malloc()
,这可能会导致很多脏代码(检查返回的内存是不是分配失败导致NULL
的返回码)。false
有没有一种优雅的方法来终止连续代码而不用 exit() 整个应用程序?
问问题
166 次
2 回答
3
您的意思是“内存分配失败后是否有一种优雅的方式可以继续”?
是的,有,但很难做到正确。通过玩setjmp
andlongump
你可以给自己一些类似于 try/catch 的紧急恢复系统,但是当你传递调用堆栈时你必须非常小心地清理。
此外,在您的清理开始实际清理分配的内存之前,对 malloc 的任何后续调用都可能失败。
大多数情况下,优雅将涉及确保您将错误状态传递回调用堆栈,并在任何地方处理它。
于 2012-08-24T09:30:53.370 回答
1
所以你想通过一些弹出窗口通知用户然后终止?
我不知道您使用的是什么库 - 在 win32 中这很容易,因为模态窗口有自己的消息循环,因此您不需要退出启动模态对话框的函数。
无论如何,您在模态对话框完成后调用退出。如果你想要一些真正的清理逻辑——这很难,而且我认为这与整个程序结构和设计有关。
更新:
顺便说一句,如果内存真的很低,即使弹出窗口可能会失败。
于 2012-08-24T09:41:25.053 回答