![]() |
1
37
是的,您仍然应该检查
然而,这并不是唯一会导致
|
![]() |
2
8
必须检查返回值是否为空 每一个 时间。任何库函数都可能失败。甚至fclose()do(在断开的NFS共享上,而来自nfs文件fclose的错误意味着数据没有保存)。 大多数软件写得不好,不包含所有检查。 malloc不能返回空值或指针以外的值。全部还是全部。如果你要求10,就不能从malloc得到1个字节。 |
![]() |
3
2
建议在所有可能返回空值的函数调用中严格检查空值,不管内核是否有过多的可提交内存。
下面的代码段显示了如何检查
void *ptr = malloc(10); if (ptr != NULL){ /* Do something here with ptr */ }else{ /* Do something here if it fails */ } 文件操作,内存操作到名称,但少数会在失败时返回空值。 希望这有帮助, 最好的问候, 汤姆。 |
![]() |
4
1
嗯……在Linux上,由于内存没有页面备份(最初),而且只在第一次读/写之后创建页面备份,所以操作系统总是会成功地为您提供内存(除非您耗尽了地址空间,否则在64位系统中是不可能的)。因此,如果它耗尽了内存,不能给你承诺的内存,OOM杀手将杀死你的应用程序或其他一些应用程序,为你提供所需的页面支持。所以不管你是否做了空检查,出来的都是一样的,崩溃了…… |
![]() |
5
-5
不,不需要检查malloc的结果。 早在malloc失败之前,操作系统就已经遇到了很多问题。 “OOM杀手和超员”是更好的选择。 什么?您的操作系统不支持“OOM Killer and Overcommit”? 这就是为什么您应该切换到Linux_或Android_的原因! |
![]() |
CocoaMix86 · 变量超出作用域后未回收内存[重复] 5 月前 |
![]() |
Yousef Dawood · javascript中的不变性是什么意思 10 月前 |
![]() |
SkyBlue · Java Spring服务的内存/垃圾收集器问题 11 月前 |