推 james732: 藉機問一下,.bss的變數有保證會初始為0嗎? 04/30 22:52
推 b0920075: Linux下.bss段就是給這個segment一個zeroed pages所以 05/01 03:15
→ b0920075: 一定會是0八 05/01 03:16
→ CoNsTaR: 變量… 05/01 03:58
推 LPH66: 只宣告那編譯器只要劃空間過去就好, 不用多一道指令搬資料 05/01 09:12
→ ronin728: 因為C有可能會使用Stack存放變數,所以會讀到之前的資料 05/01 09:22
→ ronin728: 如果不這樣,那就表示每次都要隱式清理,估計是效能考量 05/01 09:23
推 james732: stack的處理方式比bss麻煩多了,每個function都要清 05/01 10:56
推 LenaPark: 因為效率 05/01 15:13
→ Killercat: 有個更有趣的事實,大多數編譯器debug下會做相反的事情 05/04 08:15
→ Killercat: 寫入一個特定數以方便debug 05/04 08:15
→ Killercat: 不過這個特定數一定不是0就是 XD 05/04 08:16
→ tinlans: 少數 MCU 廠會要求不要把 bss 清 0 XD 05/05 21:40
→ james732: 什麼,不把bss清0有什麼好處嗎? 05/05 21:53
→ Killercat: 之前寫kernel lib有use case,該app是拿來dump的 05/06 10:11
→ Killercat: 而dump可以直接把記憶體宣告到特定位置上 不清空就可以 05/06 10:11
→ Killercat: 免去一次copy的時間,不知道上面提的MCU是不是類似case 05/06 10:12