stm8数据段和代码段的链接问题

本文讨论了STM8单片机项目中遇到的栈不足问题,并提出了通过合理分配局部变量来优化栈使用的解决方案。文章还介绍了全局变量与局部变量在内存中的不同分配方式及其对程序性能的影响。

在做stm8单片机项目的数据遇到栈不够用的问题。

在主函数里面写了太多的变量,重新定义一个函数来做相关的操作就好。(这样在相应的操作进行时才把相关的变量拷贝到栈中)

全局变量:

.BSS段:存放的是未初始化的全局变量和静态变量(至于具体存在哪里要看链接脚本)。


但是未初始化的全局变量不是可执行模块的一部分,只有当使用它们的程序被调用时(即执行时),才分配空间,声明或定义时并不分配。未初始化的全局变量在运行时被初始化为0。也就是说.BSS段最终还是存在.DATA段里面(不知道这样理解对不对。)

局部变量:

编译器按照内存地址递减的方式来给变量分配内存

int a[10];
for (int i = 0; i <= 10; ++i)
{
a[i] = 0;
}
比如上面的例子运行之后会进入死循环,其实就是编译器按照内存地址递减的方式来给变量分配内存的结果。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值