星期一, 11月 09, 2015

Memory Layout of C

近來開發Arduino遇到了記憶體配置的問題, 但Arduino內沒有足夠的debug資訊讓我了解是stack或heap overflow, 所以我想透過stack或者heap的指標位址來判斷可用的記憶體空間.


爬完wiki上的Data segmanet介紹, heap在下stack在上, heap跟stack是面對面, 中間夾出的區域就是可用的記憶體空間. 但是我先用visual C++來驗證, 卻發現跟wiki描述的不符, 似乎是相反過來的!?

後來在stackoverflow找到有人跟我同樣疑惑, 看來是linux/windows在記憶體配置上是有差異的.

win32的記憶體配置應該如下圖, heap跟stack是背對背, 往不同方向去成長.

沒有留言:

iPhone 14 Pro vs Olympus EM10 MkII 中篇

時間來到2022年, 我的S20+因為綠線事件, 立馬被我淘汰了, 同時我也正計畫購入Mini Countryman, 很殘念的是該車系統只支援CarPlay而不支援Android AUTO, 所以我也開始考慮要不要從Android換到Apple陣營. 好, 上面都是題外話, 反...