今天看了第四章,按照这个速度真是够呛能看完,仍是要提升一下本身的效率啊。。调试
利用assert.h调试,经过检测变量值来肯定程序运行过程当中的问题code
c#include <stdio.h> #include <assert.h> int main() { int x = -1; assert(x > 0); return 0; }
c#include <stdio.h> void swap(int *a, int *b) { int t = *a; *a = *b; *b = t; } void output(int a, int b) { printf("a: %d, b: %d\n", a, b); } int main() { int a = 1, b = 2; output(a, b); swap(&a,&b); output(a, b); return 0; }
gcc temp.c -g
gdb a.out
p $
bt
使用size
命令来查看执行文件中段大小递归
text data bss dec hex filename 1320 280 4 1604 644 3-8
分别是正文段,数据段和bss段。it
此外,局部变量也是存放在堆栈段的,因此栈溢出不见得是递归调用过多,也多是局部变量太大(Stack Overflow)。io
Linux的栈大小经过ulimit命令修改,不过在比赛中彷佛是不容许的。
使用ulimit -s
命令查看栈大小,单位是KB编译