共有回帖数 0 个
-
当前主流的看法是malloc之后是一定要检查返回值是否为NULL的。但是我认为实际上这个返回值并不需要检查,以下是诡辩理由:
1.malloc()返回NULL是一个系统错误,与程序无关。
我需要一块内存来保证程序能正常运行,系统不给我,程序出了什么事故就应该由系统负责(一般是segment fault),实际上malloc()失败就意味着堆空间不足,与栈溢出性质一样,你在写递归函数的时候不会每次递归前先检查是否有栈溢出吧?同样,每次malloc()的时候我们也不应该检查其返回值。
2.在模块化设计中,即使出现malloc()错误也不能很好处理。
如果在一个模块中查到malloc()错误你能怎么办呢?直接exit(-1)?这和系统提示segment fault没什么区别。或是输出错误到stderr?万一在别的模块中stderr被重定向到其它文件了怎么办?事实上,内存不足对任何程序来说都会是一个严重的错误。这时候交给系统处理,把程序终止掉就好了。
先说这两点,欢迎各种拍。。。
楼主 2015-12-10 13:02 回复
Copyright © 2010~2015 直线网 版权所有,All Rights Reserved.沪ICP备10039589号
意见反馈 |
关于直线 |
版权声明 |
会员须知