C语言分配内存时一个容易被忽视的坏习惯。

来源:互联网 发布:enjoyz足球装备网淘宝 编辑:程序博客网 时间:2024/04/28 19:55

看看这段代码。

= malloc(bytes);
if (p == NULL )
{
printf(
"can't allocate enough memory. ");
return 0;
}

 

表面上看,这样子做很好,考虑到了内存分配不足是的出错处理。但这里有个问题:设想当已经花费了几个小时处理一个文档,自己最喜欢的文字处理期突然试图为一个新字体实例分配20或30个字节,结果分配失败,并向stdout写出了一个解释然后便终止处理。没有机会取消导致内存分配请求的操作,没有保存自己工作的选择,一个小时的工作泡汤了。

 

这是《标准C语言全书》上的一个例子。也许现在有了虚拟内存技术,我们不用担心申请新的内存的时候会出现内存不足的错误。所以这样的判断永远也不会执行,我们的程序能跑起来,得到了正确的结果。于是,我们认为没有问题了。但是在面对出现其他的异常的时候,我们是不是也是以同样的错误的思维来应付。比如说一遇到错误就立马退出程序,最多的也就给个提示说出现了什么错误。但是我们从用户的角度考虑过问题了么,他们正在处理的数据怎么办?这种思维定势有的时候真的是很可怕。