1. 程式人生 > >最近程式設計的一點心得

最近程式設計的一點心得

1)編譯之前,先用splint檢查一下程式,你會收益頗多
2)出現了 "segmetation fault" 錯誤, 通常是引用了空指標,或者未初始化的指標。
3)不能malloc,說明對申請的記憶體操作失誤,把glibc的元資訊給沖掉了。例如申請了如下空間
       int * ptr = (int*) malloc(40);
       ptr[-1] = 100;  /* 上溢 */
       ptr[11] = 110; /* 下溢 */
對關於記憶體錯誤, 儘快儘早勇valgrind工具集的memcheck,會極大減少你的除錯時間。它很容易發現2和3的錯誤,不用你費勁心思找半天。
4) 一個引數在進入函式前後,未進行操作之前就變了模樣,說明形參和實參型別不匹配,而如果使用強制型別轉換,會把編譯器的警告給忽略掉,產生難以除錯的bug。
5) 一個不該發生變化的值,偏偏被改動了,如果有使用指標操作 ptr[index],可能是index的值超出了預期,就會把一些正確的值給沖掉。這個很難除錯,只能自己對著原始碼,慢慢查詢。