[C 的那些眉角]字串結尾的 \0 — 忘記它的代價

記得曾經有一次,改了一段看起來超簡單的字串處理邏輯。改完,編譯過了,燒進去跑——直接掛。 不是 crash 那 … 閱讀全文

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

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

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

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

懸空指標(Dangling Pointer)。

閱讀全文

[C 語言]為什麼sprintf要改用 snprintf?一次搞懂 C 語言的緩衝區安全

還記得第一次被 code reviewer 退回程式碼的心情嗎?當時我只是用了一個看似平凡無奇的 sprintf 函數,卻被標註為「嚴重安全問題」。當下我心想:「不就是格式化字串嗎?有這麼嚴重?」直到我深入了解後才發現,這個小小的函數選擇,可能是駭客入侵系統的大門。今天,讓我們一起來探討為什麼 sprintf 如此危險,以及為什麼所有 C 語言開發者都應該改用 snprintf


一、sprintf vs snprintf:看似相同,實則天差地別

閱讀全文