[C 的那些眉角]Stack Overflow — 嵌入式的堆疊管理

一聽到 Stack Overflow 這個名字,
大部分工程師第一個想到的是那個問答網站。

但在嵌入式開發,Stack Overflow 是一個真實會發生的災難,
而且症狀往往讓你完全摸不著頭緒。

程式跑著跑著突然 reset,
某個全域變數的值莫名其妙被改掉,
函式回傳之後跳到奇怪的位址,
或是程式直接進入 HardFault Handler,
然後你盯著 register dump 發愁。

這些症狀背後,很多時候都是同一個原因:
Stack 被寫爆了。

閱讀全文

那些年我踩過的 Memory Leak

做嵌入式 Linux 開發那幾年,Memory Leak 大概是我遇過最多次、最難抓、最容易被忽略的問題。

桌面應用程式記憶體洩漏,頂多讓程式跑慢、被 OS 回收。但在嵌入式系統上,RAM 本來就不多,一旦洩漏,輕則效能下降,重則系統直接 OOM crash,而且往往要跑好幾個小時才會發作

這篇文章整理我這幾年踩過的幾個經典 Memory Leak 案例,每個都有點不一樣,希望能幫你少走一些彎路。

⚠️ 程式碼為簡化示意版本,重點在於呈現問題模式


案例一:最經典的忘記 free 🐣

閱讀全文