IAR分配堆问题

1、IAR分配堆,正常情况下在这里可以改

2、今天在分配堆时,发现将Heap的大小增加后中的总消耗ram大小不变,这里很奇怪

3、正常情况下,堆和栈都是从ram分配的空间,一般链接文本会将他们地址放到最后,如:

这个iar的icf文件,堆和栈放在  紧挨着rw变量地址之后,他们一块构成了整个ram的使用空间

4、所以如果增加HEAP大小,则总的ram消耗必然增加的

5、这里经过测试,原来时这样

        因为heap时 预留给动态申请内存用的,我的程序没使用malloc函数(或相似功能函数),这时IAR会自动优化代码,释放了Heap空间,还给了ram

6、验证:

1》 程序没使用malloc函数时,查看map文件里关于堆和栈的信息如下:

可以看到图中只有栈的信息,没有heap的地址信息,说明heap还给ram了

2》 随便在一个地方使用malloc函数,map文件里关于堆和栈的信息如下:

这里显示出来了HEAP信息,并提示有个FAILED,因为我这个mcu空间比较小,如果ram还分配空间给了Heap,导致整个ram空间不够,故而提示错误

补一张,减小heap后的成功分配heap信息

原来如此

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值