MCU的程序的存储结构详述

简介

程序由一个或者多个函数组成,必须要有main()函数,作为程序入口。
MCU为32位,M3内核

一、存储结构

程序存储在RAM内存中,内存结构由高地址到低地址分别为:STACK、unused memory、HEAP、BSS、GVAR、TEXT。

STACK即:编译期间就能确认的存储大小,在函数作用域内创建,离开作用域后销毁。

HEAP即: 使用malloc或者new开辟的空间,需要灵活释放,否则有溢出故障。

BSS段:Block Started by Symbol,没有被初始化的全局变量和静态变量,会被初始化为0.

GVAR即数据段:初始化后的全局变量,静态变量,常量。

TEXT即代码段:存放程序代码主题,函数主题,为二进制格式。

二、实践记录

软件编译后的数据分为text ; data ; bss ; dec , hex

2.1 软件编译后

text 11036 ; data 256 ; bss 12444 ; dec=text+data+bss
增加uint16_t的数组[1000],在main里,引用后(不引用编译器不会分配空间):
text:11044 ; data 256 ; bss 14444
总结:text增加8Byte ; bss增加2000=1000*2

MCU数据手册所说的RAM=data+bss

2.2 MCU的link文件

在这里插入图片描述
在这里插入图片描述

概念

堆与栈的区别
1.栈是先入后出,堆是先进先出
2.栈是的空间是系统自己分配并释放,堆是程序申请空间并进行释放。

malloc:分配一块连续的内存空间,和free函数一起使用。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值