C Traps & Pitfalls
2012-12-08 20:40 robturtle 阅读(238) 评论(0) 编辑 收藏 举报2012/12/08 优先级错误
尼玛,才刚看完这本书没两个月,就犯了里面说的错误了!而且还是和里面的例子非常相似的错误!
在写一个系统编程的例子里有一个表达式:
(ret = read(src, ptr, len)) != 0
然后,非常可惜地,写成了:
(ret = read(src, ptr, len) != 0)
于是这个ret就只能取0或1了!!!实在是被恶心到了……
几个月前 sizeof语义/数组与指针的区别
这个是之前写一个shell程序时调了半天才发现的。
int main(int argc, char **argv); int main(int argc, char *argv[]);
上面两个main函数的声明是完全等价的,因为数组作为参数传递时传递的是指针。而 sizeof(argv[0]) 返回的是 4 而不是它指向字符串的字节长度!
形影不离的问题 关于内存泄露
虽然高手都建议你使用逻辑debug而不是debug应用程序,但如果你扫了好几遍你的C代码还是没有发现是哪里泄露了,就在vim下敲入"/++"吧!