- 论坛徽章:
- 0
|
朋友们引以为戒啊……绝对教科书级经典的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的兄弟:哼哼…… |
|