免费注册 查看新帖 |

Chinaunix

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

[C] 《C程序设计伴侣》里的月薪10000的代码 [复制链接]

论坛徽章:
2
技术图书徽章
日期:2013-09-04 15:21:51酉鸡
日期:2013-11-01 21:20:20
41 [报告]
发表于 2012-10-08 10:37 |只看该作者
Ager 发表于 2012-10-08 02:52
国内受影响养成这个习惯的,可能更大的源头是《C陷阱与缺陷》。

如果-Wall的话,一些正确的 if(t=s) ...

-Wall 依赖于编译器的版本。低版本的gcc可以完全通过,到了高版本就会出现警告错误了。不过-Wall可以最大限度地指出程序的隐患。

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:50:28
42 [报告]
发表于 2012-10-08 11:08 |只看该作者
明显的缓存区溢出漏洞啊。

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:49:45
43 [报告]
发表于 2012-10-08 11:28 |只看该作者
0xC1988 发表于 2012-10-06 21:06
最后的大亮

一般情况下这么写不会影响性能{:3_189:}

  1. hoolala@ubuntu:/tmp$ cat t.c
  2. #include <stdio.h>

  3. int main() {
  4.         FILE* file = fopen("file.txt", "w");
  5.         fclose(file);
  6.         file = NULL;
  7.         return 0;
  8. }
  9. hoolala@ubuntu:/tmp$ gcc t.c -S -O2
  10. hoolala@ubuntu:/tmp$ cat t.s
  11.         .file        "t.c"
  12.         .section        .rodata.str1.1,"aMS",@progbits,1
  13. .LC0:
  14.         .string        "w"
  15. .LC1:
  16.         .string        "file.txt"
  17.         .section        .text.startup,"ax",@progbits
  18.         .p2align 4,,15
  19.         .globl        main
  20.         .type        main, @function
  21. main:
  22. .LFB22:
  23.         .cfi_startproc
  24.         subq        $8, %rsp
  25.         .cfi_def_cfa_offset 16
  26.         movl        $.LC0, %esi
  27.         movl        $.LC1, %edi
  28.         call        fopen
  29.         movq        %rax, %rdi
  30.         call        fclose
  31.         xorl        %eax, %eax       <<======== 这里是设定返回值
  32.         addq        $8, %rsp           <<======== 退栈操作
  33.         .cfi_def_cfa_offset 8
  34.         ret                       <<=========  函数返回,可见file = NULL这句完全被优化掉了
  35.         .cfi_endproc
复制代码

论坛徽章:
5
狮子座
日期:2013-08-20 10:12:24午马
日期:2013-11-23 18:04:102015年辞旧岁徽章
日期:2015-03-03 16:54:152015亚冠之德黑兰石油
日期:2015-06-29 18:11:1115-16赛季CBA联赛之新疆
日期:2024-02-21 10:00:53
44 [报告]
发表于 2012-10-08 11:43 |只看该作者
回复 43# koolcoy


    不是性能问题。这么写的人明显脑子不清醒。你敢交给他重要任务么

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:49:45
45 [报告]
发表于 2012-10-08 11:45 |只看该作者
本帖最后由 koolcoy 于 2012-10-08 11:46 编辑

回复 44# starwing83

我只是说一下,书上的代码你跟它扣质量多没意思啊,闭上眼睛一抓都是一大把问题的
   

论坛徽章:
5
狮子座
日期:2013-08-20 10:12:24午马
日期:2013-11-23 18:04:102015年辞旧岁徽章
日期:2015-03-03 16:54:152015亚冠之德黑兰石油
日期:2015-06-29 18:11:1115-16赛季CBA联赛之新疆
日期:2024-02-21 10:00:53
46 [报告]
发表于 2012-10-08 11:50 |只看该作者
回复 45# koolcoy


    想当年看APUE,那个代码是多么优美啊……别说抓bug,有些代码你就那么看都不一定能明白它的原理,还得配上文字说明。

论坛徽章:
23
双鱼座
日期:2013-08-30 09:25:19辰龙
日期:2014-07-28 11:22:24白羊座
日期:2014-08-26 10:34:1815-16赛季CBA联赛之浙江
日期:2016-03-15 10:51:5415-16赛季CBA联赛之八一
日期:2016-05-31 09:38:3615-16赛季CBA联赛之辽宁
日期:2017-08-31 14:59:2115-16赛季CBA联赛之辽宁
日期:2017-12-06 14:12:3615-16赛季CBA联赛之天津
日期:2019-01-02 15:25:4915-16赛季CBA联赛之深圳
日期:2020-12-06 11:26:21狮子座
日期:2014-05-19 09:16:35技术图书徽章
日期:2014-03-27 13:37:39技术图书徽章
日期:2013-08-30 09:28:52
47 [报告]
发表于 2012-10-08 12:39 |只看该作者
starwing83 发表于 2012-10-08 11:43
回复 43# koolcoy

初衷可能是抱着“指针在不用时要将其栓住(置为NULL),避免野指针”。

不过在这里多此一举,比较教条。

论坛徽章:
5
狮子座
日期:2013-08-20 10:12:24午马
日期:2013-11-23 18:04:102015年辞旧岁徽章
日期:2015-03-03 16:54:152015亚冠之德黑兰石油
日期:2015-06-29 18:11:1115-16赛季CBA联赛之新疆
日期:2024-02-21 10:00:53
48 [报告]
发表于 2012-10-08 12:52 |只看该作者
回复 47# dengxiayehu


    关键是,这条规则应该是,非局部的指针应该置为NULL,避免野指针。因为局部指针本身在生命期之后都会被释放掉的。另一个可能的问题是局部指针有可能在其后继续被使用。这种情况下适用的是另一个教条:尽量限制局部变量的作用域。

教条主义其实不是错,可是不分青红皂白地教条就只能叫愚蠢了。

论坛徽章:
2
技术图书徽章
日期:2013-09-04 15:21:51酉鸡
日期:2013-11-01 21:20:20
49 [报告]
发表于 2012-10-08 13:56 |只看该作者
starwing83 发表于 2012-10-08 11:43
回复 43# koolcoy


不是不清醒,而是没有跨过那个门槛。

论坛徽章:
78
双子座
日期:2013-10-15 08:50:09天秤座
日期:2013-10-16 18:02:08白羊座
日期:2013-10-18 13:35:33天蝎座
日期:2013-10-18 13:37:06狮子座
日期:2013-10-18 13:40:31双子座
日期:2013-10-22 13:58:42戌狗
日期:2013-10-22 18:50:04CU十二周年纪念徽章
日期:2013-10-24 15:41:34巨蟹座
日期:2013-10-24 17:14:56处女座
日期:2013-10-24 17:15:30双子座
日期:2013-10-25 13:49:39午马
日期:2013-10-28 15:02:15
50 [报告]
发表于 2012-10-08 14:34 |只看该作者
回复 30# Ager


    大侠,变量名不是不能带$符号吗?测试了下好像可以啊。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP