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()函数。
  • 栈区是调用子函数时局部变量存储的空间,子函数结束时会自动释放内存空间。由于栈区存放的内容在子函数调用后会被释放,少用全局变量会让代码的移植性更好。
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容