[C 的那些眉角]指標用完要歸零 — 懸空指標的恐怖故事

有一種 bug,我只要想到就頭皮發麻。

明明程式跑得好好的,突然在某個完全不相關的地方 crash,
或是資料莫名其妙被改掉,
或是在開發機上完全正常,到了產品上偶爾出問題。

很多時候,追到最後都是同一個兇手:

懸空指標(Dangling Pointer)。

閱讀全文

[C 的那些眉角]參數傳遞的眉角 — `const` 用對了嗎?

const 這個關鍵字,我用了很久都只會這樣寫:

const int MAX_SIZE = 256;

然後在函式參數上偶爾加一下,
覺得「這樣比較專業」,但其實不太確定為什麼要加。

直到有一次,同事在 code review 留言:

「這個參數應該加 const,你這樣寫呼叫端不知道你會不會改它。」

我才開始認真研究 const 在參數傳遞上到底是什麼意思。

結果發現,const 跟指標放在一起,
光是位置不同,意思就完全不一樣。

閱讀全文