C语言分配内存时一个容易被忽视的坏习惯。
来源:互联网 发布:enjoyz足球装备网淘宝 编辑:程序博客网 时间:2024/04/28 19:55
看看这段代码。
p = malloc(bytes);
if (p == NULL )
...{
printf("can't allocate enough memory. ");
return 0;
}
if (p == NULL )
...{
printf("can't allocate enough memory. ");
return 0;
}
表面上看,这样子做很好,考虑到了内存分配不足是的出错处理。但这里有个问题:设想当已经花费了几个小时处理一个文档,自己最喜欢的文字处理期突然试图为一个新字体实例分配20或30个字节,结果分配失败,并向stdout写出了一个解释然后便终止处理。没有机会取消导致内存分配请求的操作,没有保存自己工作的选择,一个小时的工作泡汤了。
这是《标准C语言全书》上的一个例子。也许现在有了虚拟内存技术,我们不用担心申请新的内存的时候会出现内存不足的错误。所以这样的判断永远也不会执行,我们的程序能跑起来,得到了正确的结果。于是,我们认为没有问题了。但是在面对出现其他的异常的时候,我们是不是也是以同样的错误的思维来应付。比如说一遇到错误就立马退出程序,最多的也就给个提示说出现了什么错误。但是我们从用户的角度考虑过问题了么,他们正在处理的数据怎么办?这种思维定势有的时候真的是很可怕。
- C语言分配内存时一个容易被忽视的坏习惯。
- 容易被忽视的一个Access关键字
- 一个容易被忽视的 strlen 细节
- 语言 基础 容易忽视的
- C++与C语言容易忽视的几个差异
- C语言中一些容易忽视的细节
- 【C/C++】C语言中一些容易被人忽略的东西 之一 【内存的分配与释放】
- 一些容易被大家忽视的C语言函数和一些C++函数的基本应用
- Java语言中容易被人忽视的细节
- 一些容易被初学者忽视的C#语言细节
- C++中一个容易被忽视的名字查找规则
- C++中一个容易被忽视的名字查找规则
- for循环一个容易被忽视的问题
- C++中一个容易被忽视的名字查找规则
- 命名空间 - 一个容易被忽视的查找规则
- java中容易忽视的内存泄露
- 容易被忽视的synchronized
- C语言的内存分配
- java的反编译工具大全
- 在Word中,如何删除页眉页脚
- 编程语言的趋势及其他
- TCP/IP基础
- TCP/IP网络是如何通讯的
- C语言分配内存时一个容易被忽视的坏习惯。
- IP协议解码详解
- Google工程师解释Googlebot怎样抓取网页
- SQL Server2005中删除重复行
- IP协议解码详解
- 详细讲解大型数据库的设计原则与开发技巧
- ARP协议工作原理
- Web 2.0 的秘方:网络效应
- 大型ERP等数据库系统常见的几种设计