stm32f103xxxx系列SRAM内存会分成这几个区:
-
代码区
-
静态存储区
-
动态存储区
其中
- 静态存储区包括:
- 常量,只读数据(RO-DATA)
- 已初始化的全局变量(RW-DATA)
- 未初始化的全局变量(ZI-DATA)
- 动态存储区包括:
- 堆区(heap area),动态分配的内存区域
- 栈区(stack area),局部变量存储区域
- 命令行参数区
- 在C语言中,存储在代码区和静态存储区的内存空间是不会被回收的,可被回收的是动态存储区,它包括堆区和栈区。
- 堆区是在调用ANSI C标准的malloc()或calloc()函数时,动态申请内存时使用的,这些函数获得的内存空间就位于堆区,这部分内存空间的释放需要调用free()函数。
- 栈区是调用子函数时局部变量存储的空间,子函数结束时会自动释放内存空间。由于栈区存放的内容在子函数调用后会被释放,
少用全局变量会让代码的移植性更好。