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