stm32 SRAM内存变量分布

stm32f103xxxx系列SRAM内存会分成这几个区:
  • 代码区
  • 静态存储区
  • 动态存储区
其中
  • 静态存储区包括:
  1. 常量,只读数据(RO-DATA)
  2. 已初始化的全局变量(RW-DATA)
  3. 未初始化的全局变量(ZI-DATA)
  • 动态存储区包括:
  1. 堆区(heap area),动态分配的内存区域
  2. 栈区(stack area),局部变量存储区域
  3. 命令行参数区

  • 在C语言中,存储在代码区和静态存储区的内存空间是不会被回收的,可被回收的是动态存储区,它包括堆区和栈区。
  • 堆区是在调用ANSI C标准的malloc()或calloc()函数时,动态申请内存时使用的,这些函数获得的内存空间就位于堆区,这部分内存空间的释放需要调用free()函数。
  • 栈区是调用子函数时局部变量存储的空间,子函数结束时会自动释放内存空间。由于栈区存放的内容在子函数调用后会被释放,少用全局变量会让代码的移植性更好。

你可能感兴趣的:(stm32 SRAM内存变量分布)