免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: mmmixx
打印 上一主题 下一主题

脱裤子放屁的代码…… [复制链接]

论坛徽章:
0
71 [报告]
发表于 2007-08-09 22:49 |只看该作者
原帖由 flw 于 2007-8-9 22:42 发表

一个已经出错了的程序,如果还不去死掉那简直太危险了。
更重要的是,这种错误是程序设计上的错误,而不是运行时设备的错误。



我在瞬间有了两个认识:
1. 你说的也有道理,估计再说下去,你会说这是个哲学的问题了;
2. 这里好多夜猫;

论坛徽章:
0
72 [报告]
发表于 2007-08-09 22:49 |只看该作者
原帖由 yulc 于 2007-8-9 22:38 发表




站在flw的技能高度可能这个NULL的判断是多余的.
但是,我觉得这个判断还是有必要的.

在大多数情况下,好的程序员是不需要这个NULL的判断来保证不会释放野指针的.
但是,人总是会犯错的,更重要的是在程 ...

  1. free(ptr);
  2. ptr = NULL;
  3. .....

  4. ptr ->XX;
复制代码


  1. free(ptr);
  2. ....
  3. ptr->XXX;
复制代码


从出错的结果来看都是一样的。free 掉后,加不加一句 NULL,再 reference 都会出错。
所以,就显得多余了。

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
73 [报告]
发表于 2007-08-09 22:50 |只看该作者
原帖由 yulc 于 2007-8-9 22:49 发表

我在瞬间有了两个认识:
1. 你说的也有道理,估计再说下去,你又会说这是个哲学的问题了;
2. 这里好多夜猫;

其实我今天心不在焉的,
也没仔细从头到尾看这个帖子,
只见一堆人在混战,
说实话我现在都分不清你是敌是友。
呵呵。

论坛徽章:
0
74 [报告]
发表于 2007-08-09 22:52 |只看该作者
第一种写法马上会报错
第二种不一定哟

原帖由 mik 于 2007-8-9 22:49 发表


free(ptr);
ptr = NULL;
.....

ptr ->XX;

free(ptr);
....
ptr->XXX;

从出错的结果来看都是一样的。free 掉后,加不加一句 NULL,再 reference 都会出错。
所以,就显得多余了。

论坛徽章:
0
75 [报告]
发表于 2007-08-09 22:53 |只看该作者
原帖由 ypxing 于 2007-8-9 22:52 发表
第一种写法马上会报错
第二种不一定哟



第二种什么情形下不会马上出错?

论坛徽章:
0
76 [报告]
发表于 2007-08-09 22:56 |只看该作者
原帖由 mik 于 2007-8-9 22:49 发表


free(ptr);
ptr = NULL;
.....

ptr ->XX;

free(ptr);
....
ptr->XXX;

从出错的结果来看都是一样的。free 掉后,加不加一句 NULL,再 reference 都会出错。
所以,就显得多余了。



但是,
free(ptr);
ptr = NULL;
.....
free(ptr);



free(ptr);
....
free(ptr);



是不一样的.
等等
好像和判不判断NULL没关系..
...晕了

论坛徽章:
0
77 [报告]
发表于 2007-08-09 22:59 |只看该作者
原帖由 benjiam 于 2007-8-9 21:52 发表

23 楼有啥?

23楼说posix要求: free的对象若是NULL,那么free不做任何动作.

论坛徽章:
0
78 [报告]
发表于 2007-08-09 23:15 |只看该作者

  1. include <iostream>
  2. using namespace std;

  3. class AAA
  4. {
  5. public:
  6.   int i;
  7. };


  8. int main()
  9. {
  10.   AAA *aaa = (AAA*)malloc(sizeof(AAA));
  11.   aaa->i = 6;
  12.   free(aaa);
  13.   aaa->i = 5; //不一定会马上出错
  14.   return 0;
  15. }

复制代码

原帖由 mik 于 2007-8-9 22:53 发表


第二种什么情形下不会马上出错?

论坛徽章:
0
79 [报告]
发表于 2007-08-09 23:26 |只看该作者
我越来越觉得这是个哲学的问题了:
当明知错误产生时,自身需不需要尝试去弥补?
另外,发现研究这种东西会使我上瘾,我一定要戒掉它.

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
80 [报告]
发表于 2007-08-09 23:30 |只看该作者
原帖由 yulc 于 2007-8-9 23:26 发表
我越来越觉得这是个哲学的问题了:
当明知错误产生时,自身需不需要尝试去弥补?
另外,发现研究这种东西会使我上瘾,我一定要戒掉它.

不是弥补,是隐瞒。
正如有些人看到自己的程序总是收到 SIGSEGV 信号,于是干脆屏蔽掉它一样。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP