|
|
1
3
Should I bother detecting OOM (out of memory) errors in my C code? 这是我对一个类似问题的回答。总之,我赞成设计应用程序,使其从任何类型的崩溃中恢复,然后将内存不足作为崩溃的原因。 |
|
2
4
这不是一个好主意,因为 其他 比起为一个任务编写的简单程序,您希望做一些比释放更有用/更优雅的事情。所以最好不要养成坏习惯。这并不是说围绕分配的包装器是坏的 本身 (集中错误处理可能是一件好事),只是不检查返回值(例如,失败时根本不返回)的包装是一个坏主意,除非您提供了某种机制,允许代码钩住纾困逻辑。
如果你真的想用你所展示的形式,我强烈建议你用一个比
|
|
|
3
4
在大多数情况下,使用空指针的尝试很快就会使程序崩溃,而且调试起来也会更容易,因为您可以得到一个很好的内核转储文件,如果调用
我给出的唯一建议是在分配完返回的指针后尽快取消引用,即使这是无偿的,这样核心转储可以直接引导您找到错误的malloc调用。 你很少能从记忆衰竭中恢复过来,所以退出通常是正确的事情。但这样做是为了让验尸更容易。 不过,为了清楚起见,内存耗尽通常发生在操作系统被页面交换活动破坏很久之后。这个策略实际上只对捕捉荒谬的分配有用,比如由于一个bug尝试malloc(一个小的负的数)。 |
|
|
4
3
对你来说没关系。请记住给出一个提前退出的消息,最好指定行号。有人这样想:
编辑:正如其他人所提到的,对于一个有经验的程序员来说,这不是一个好的习惯,但是对于一个初学者来说,即使在“快乐”的情况下跟踪程序流程也有困难。 |
|
|
5
1
“检查
有很多原因
如何处理内存耗尽取决于程序的性质。 当然,从整个系统的健康角度来看,您的程序死了很好。这减少了资源匮乏,并可能允许其他应用程序继续运行。另一方面,如果这意味着编辑视频、打字、起草博客文章、编码等工作时间的减少,用户会非常不安;或者,如果他们的mp3播放器突然因内存不足而死机,意味着他们的磁盘停止跳动,并且他们能够返回文字处理器并单击“保存”,用户可能会很高兴。
至于OP最初的问题,我强烈建议不要写
一个更好的解决方案是继续将失败返回给调用函数,并让调用函数将失败返回给它的调用函数,等等,直到您完全返回到
|
|
|
6
0
我认为这是个坏主意,因为首先要检查
(我假设您是为托管环境而非嵌入式独立环境编写的。)
拥有巨大虚拟地址空间的现代系统
从未
返回
所以不,不要检查这些函数的返回,这没什么意义。相反,请检查
|
|
|
MaPo · Linux,设置锁定ICMP_过滤器选项 1 年前 |
|
Doohyeon Won · 内联函数上的奇怪现象?[关闭] 1 年前 |
|
|
Bobby · 复合字面值总是左值吗? 1 年前 |
|
9-Pin · C: 嵌套结构的堆栈内存分配 1 年前 |