在Cocoa中处理malloc失败的最佳方法

Ano*_*ous 3 malloc cocoa exception

虽然它不会经常发生,但有几种情况我的Cocoa应用程序将分配非常大量的内存,足以让我担心malloc失败.在Cocoa应用程序中处理此类故障的最佳方法是什么?我听说在这个开发环境中通常不鼓励例外,但这是一个有用的情况吗?

bbu*_*bum 5

如果由于内存不足而导致分配失败,则更有可能在某个框架中出现分配错误,导致应用程序处于未确定状态.

即使情况并非如此,你也无法做任何能够分配内存并且只留下很少选择的东西.

即使释放内存以试图"修复"问题也不会一直有效,甚至不能通过显示一个很好的错误消息并干净地退出来"修复"它.

您也不想尝试从此状态保存数据.或者,至少,并非没有编写处理读取时损坏数据所需的所有代码(因为很可能失败的分配意味着某些代码在某处损坏了内存).

将分配失败视为致命,记录和退出.

这是极其罕见的正确书面申请耗尽内存.更有可能的是,当应用程序内存不足时,用户的系统将会像地狱一样分页,因此,在分配失败之前,性能已经显着降低.

专注于优化和减少内存使用的投资回报将比尝试从分配失败中恢复大几个数量级.

(艾伦的原始答案和他的编辑一样准确).