
C拾掇
ykqnjust
这个作者很懒,什么都没留下…
展开
-
1. free(): invalid next size (fast)
<br /> free(): invalid next size (fast): 0x095f6070<br />是由于对指针0x095f6070指向的空间,进行写操作超过了他实际申请的大小<br />这个错误是由于对?:运算符使用时,没有在最外层加上括号,由于?:优先级较低,<br />导致的运算顺序错误。比如:<br />#define MAX(x,y) (x)>(y)? (x):(y)<br />缺少最外层大括号,就会导致2*MAX出问题。原创 2010-12-01 11:07:00 · 4200 阅读 · 0 评论 -
浅谈宏定义中“#”,“##”和“...”的使用
C语言中如何使用宏C(和C++)中的宏(Macro)属于编译器预处理的范畴,属于编译期概念(而非运行期概念)。下面对常遇到的宏的使用问题做了简单总结。关于#和##在C语言的宏中,#的功能是将其后面的宏参数进行字符串化操作(Stringfication),简单说就是在对它所引用的宏变量通过替换后在其左右各加上一个双引号。比如下面代码中的宏: #define WARN_IF(EXP) / do{ if (EXP) / fprintf(stderr, "Warnin转载 2010-11-10 09:16:00 · 996 阅读 · 1 评论 -
调试总结
<br />下面列出调试中的实战经验总结,不定时更新。<br /> <br /> <br />1.函数的栈空间有限,在函数内部申请buf的时候不能过大,比如:<br />void capture_demo()<br />{<br /> char buf[3][16*1024];<br />......<br />}<br />buf这样的临时变量size过大,超出了函数的栈大小限制,会出难查的问题;<br />如果真的需要buf有这么大的size,可以申请堆空间。<br /> <br />2.linux原创 2011-03-09 09:07:00 · 769 阅读 · 0 评论 -
google C++代码规范
近日google发布了c++,javascript,object-c等代码规范,甚至针对脚本cpplint来检查c++代码是否符合规范。打算翻译下来供大家参考。原创 2011-03-10 09:14:00 · 2952 阅读 · 0 评论