签到

05月06日
尚未签到

共有回帖数 0

    做月子

    等级:
    当前主流的看法是malloc之后是一定要检查返回值是否为NULL的。但是我认为实际上这个返回值并不需要检查,以下是诡辩理由:

    1.malloc()返回NULL是一个系统错误,与程序无关。
       我需要一块内存来保证程序能正常运行,系统不给我,程序出了什么事故就应该由系统负责(一般是segment fault),实际上malloc()失败就意味着堆空间不足,与栈溢出性质一样,你在写递归函数的时候不会每次递归前先检查是否有栈溢出吧?同样,每次malloc()的时候我们也不应该检查其返回值。

    2.在模块化设计中,即使出现malloc()错误也不能很好处理。
       如果在一个模块中查到malloc()错误你能怎么办呢?直接exit(-1)?这和系统提示segment fault没什么区别。或是输出错误到stderr?万一在别的模块中stderr被重定向到其它文件了怎么办?事实上,内存不足对任何程序来说都会是一个严重的错误。这时候交给系统处理,把程序终止掉就好了。

    先说这两点,欢迎各种拍。。。

    楼主 2015-12-10 13:02 回复

共有回帖数 0
  • 回 帖
  • 表情 图片 视频
  • 发表

登录直线网账号

Copyright © 2010~2015 直线网 版权所有,All Rights Reserved.沪ICP备10039589号 意见反馈 | 关于直线 | 版权声明 | 会员须知