有一種 bug,我只要想到就頭皮發麻。
明明程式跑得好好的,突然在某個完全不相關的地方 crash,
或是資料莫名其妙被改掉,
或是在開發機上完全正常,到了產品上偶爾出問題。
很多時候,追到最後都是同一個兇手:
懸空指標(Dangling Pointer)。
韌體開發 x 踩坑心得 x 讓錢慢慢長大
記得曾經有一次,改了一段看起來超簡單的字串處理邏輯。改完,編譯過了,燒進去跑——直接掛。 不是 crash 那 … 閱讀全文
有一種 bug,我只要想到就頭皮發麻。
明明程式跑得好好的,突然在某個完全不相關的地方 crash,
或是資料莫名其妙被改掉,
或是在開發機上完全正常,到了產品上偶爾出問題。
很多時候,追到最後都是同一個兇手:
懸空指標(Dangling Pointer)。
還記得第一次被 code reviewer 退回程式碼的心情嗎?當時我只是用了一個看似平凡無奇的 sprintf 函數,卻被標註為「嚴重安全問題」。當下我心想:「不就是格式化字串嗎?有這麼嚴重?」直到我深入了解後才發現,這個小小的函數選擇,可能是駭客入侵系統的大門。今天,讓我們一起來探討為什麼 sprintf 如此危險,以及為什麼所有 C 語言開發者都應該改用 snprintf。