今天看了第四章,按照這個速度真是夠嗆能看完,仍是要提升一下本身的效率啊。。調試
利用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編譯