stm32f103xxxx系列SRAM內(nèi)存會分成這幾個區(qū):
-
代碼區(qū)
-
靜態(tài)存儲區(qū)
-
動態(tài)存儲區(qū)
其中
- 靜態(tài)存儲區(qū)包括:
- 常量茫船,只讀數(shù)據(jù)(RO-DATA)
- 已初始化的全局變量(RW-DATA)
- 未初始化的全局變量(ZI-DATA)
- 動態(tài)存儲區(qū)包括:
- 堆區(qū)(heap area),動態(tài)分配的內(nèi)存區(qū)域
- 棧區(qū)(stack area)算谈,局部變量存儲區(qū)域
- 命令行參數(shù)區(qū)
- 在C語言中,存儲在代碼區(qū)和靜態(tài)存儲區(qū)的內(nèi)存空間是不會被回收的然眼,可被回收的是動態(tài)存儲區(qū),它包括堆區(qū)和棧區(qū)高每。
- 堆區(qū)是在調(diào)用ANSI C標準的malloc()或calloc()函數(shù)時,動態(tài)申請內(nèi)存時使用的爷怀,這些函數(shù)獲得的內(nèi)存空間就位于堆區(qū),這部分內(nèi)存空間的釋放需要調(diào)用free()函數(shù)运授。
- 棧區(qū)是調(diào)用子函數(shù)時局部變量存儲的空間洪囤,子函數(shù)結(jié)束時會自動釋放內(nèi)存空間。由于棧區(qū)存放的內(nèi)容在子函數(shù)調(diào)用后會被釋放瘤缩,
少用全局變量會讓代碼的移植性更好。