打印
[STM32F1]

stack和heap是不是这样设置最简单

[复制链接]
2094|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
EAMCU|  楼主 | 2014-2-25 16:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 EAMCU 于 2014-3-6 14:19 编辑

使用mdk,我的程序里有自己分配内存的部分,由于常常给stack分配太多空间,导致经常出现内存不对的情况
后来发现如下设置就比较省心
stack设为1个很小的值,heap设置成1个很大的值,两者之和基本接近stm32的总内存量
因为网上看到别人说,不管你stack设多小都没关系,如果不够,编译器编译时会自动调整到够用为止,剩下的部分会相当于全部分配给heap。

如果这样设置还不够内存,说明应该换更大内存的片子了,对吗
沙发
EAMCU|  楼主 | 2014-3-6 14:19 | 只看该作者
求人指点一下,我这个做法对不对,有没有隐患

使用特权

评论回复
板凳
王紫豪| | 2014-3-6 14:50 | 只看该作者
不对,heap 要看你用没用(malloc 申请的),stack要估算差不多

使用特权

评论回复
地板
EAMCU|  楼主 | 2014-3-6 15:03 | 只看该作者
王紫豪 发表于 2014-3-6 14:50
不对,heap 要看你用没用(malloc 申请的),stack要估算差不多

heap用了,我的程序里有不少是自己分配内存,但是由于以前分给stack的多,所以导致heap不够用
后来根据网上说的stack部分,mdk会自己调整,所以干脆把stack设成很小,heap设成很大,它们的和不超过总内存
实际实践下来,使用没有问题
但是由于对这方面的了解有限,所以不知道有没有隐患

使用特权

评论回复
5
EAMCU|  楼主 | 2014-3-14 13:15 | 只看该作者
王紫豪 发表于 2014-3-6 14:50
不对,heap 要看你用没用(malloc 申请的),stack要估算差不多

我错了,你说的是对的。
我那个实验没问题只是因为碰巧设置没出错,但是我的理解是错的。
我发现mdk的工程文件夹下有个project.htm文件
里面有一句:
Maximum Stack Usage = 528 bytes + Unknown(Cycles, Untraceable Function Pointers)
请问这里的意思就是stack设为528bytes就可以了吗?
为了保险,把后面的unknown加进去,设为两倍,stack设成 1k 大小,请问这样是不是就算stack设置完成,然后剩下的部分都设为heap,然后如果实践运行中,没有问题,就可以了?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

38

主题

396

帖子

2

粉丝