免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 5166 | 回复: 16
打印 上一主题 下一主题

今天逮着一个惊世骇俗的BUG…… [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-04-04 18:05 |只看该作者 |倒序浏览
朋友们引以为戒啊……绝对教科书级经典的BUG!

代码如下:
001:static __inline void *
002:_malloc_align_str (size_t size, unsigned int log2_align , char *str )
003:{
004:    // Here is some implemention code……

005:}
006:
007:static __inline void *
008:_malloc_align (size_t size, unsigned int log2_align )
009:{
010:  _malloc_align_str (size, log2_align , NULL );
011:}


我觉得_malloc_align( s , l )无非是_malloc_align_s( s , l , NULL )的调用么。
我就直接封装了。
没想到,第010行少写了个“return”,Faint!!!!满屏幕Segment Error!(您要知道,malloc的使用频率有多高……555555)

捉这个bug我用了一天半时间……子啊!饿滴神啊!

三点感悟:
1.《C陷阱与缺陷》可以把我的这段惨痛经历当成新的一章了……

2.GCC的-Wall选项绝对有必要,事后我加上-Wall选项编译,warning如下:
   malloc_align.h:80: warning: no return statement in function returning non-void
(5555555,我为啥不早点加-Wall呀。)

3.告诫那些编译时只看error不看warning的兄弟:哼哼……

论坛徽章:
0
2 [报告]
发表于 2008-04-04 18:09 |只看该作者
我去,什么乱七八糟的。

论坛徽章:
0
3 [报告]
发表于 2008-04-04 18:12 |只看该作者

回复 #2 Angel lee 的帖子

呵呵……细细看绝对有收获……

论坛徽章:
0
4 [报告]
发表于 2008-04-04 18:51 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
5 [报告]
发表于 2008-04-04 19:31 |只看该作者

回复 #4 jamesr 的帖子

要不你咋成“大天使”,我还是棵小草呢……哈哈

论坛徽章:
0
6 [报告]
发表于 2008-04-04 20:50 |只看该作者
俺一直用-Wall -Werror
如果确实需要(如外来源码)再用类似-Wno-unused加上确定可以忽略的警告,
例如:
#include <stdio.h>

int
foo(void)
{
}

int
bar(void)
{
        int      n;
        return  (0);
}

int
main(void)
{
        foo();
        return (0);
}

mymtom@freebsd gcc -Wall -Werror -o warning warning.c   
warning.c: In function `foo':
warning.c:5: warning: control reaches end of non-void function
warning.c: In function `bar':
warning.c:11: warning: unused variable `n'
mymtom@freebsd cc -Wall -Wno-unused -Werror  warning.c  -o warning
warning.c: In function `foo':
warning.c:5: warning: control reaches end of non-void function

论坛徽章:
0
7 [报告]
发表于 2008-04-07 10:54 |只看该作者
以前写程序,没觉得warning有多严重,程序运行基本也没出什么问题。
现在写程序,出现一个warning都不放过,懂得了要把隐患消灭于萌芽状态。

不过,楼主这标题就有点哗众取宠了。

论坛徽章:
0
8 [报告]
发表于 2008-04-07 12:18 |只看该作者
楼主以前一定是娱记,怪不得这么会“说话”。

论坛徽章:
0
9 [报告]
发表于 2008-04-07 12:49 |只看该作者
原帖由 westgarden 于 2008-4-7 12:18 发表
楼主以前一定是娱记,怪不得这么会“说话”。


俺怎么没想到呢?
一定是娱记, 一定是的.

论坛徽章:
0
10 [报告]
发表于 2008-04-07 14:13 |只看该作者
哗众取宠,无聊!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP