求助:栈满了怎么办

[复制链接]
2976|9
 楼主| shangelaila 发表于 2010-7-10 11:49 | 显示全部楼层 |阅读模式
AC, ck, se, ST, Stack
:'(程序以前一直跑都没问题,现在出现错误:
Sat Jul 10 11:58:55 2010: The stack 'CSTACK' is filled to 90% (928 bytes used out of 1024). The warning threshold is set to 90.%


请问怎么回事?为什么突然就这样了?
ecomputer 发表于 2010-7-10 13:28 | 显示全部楼层
程序中减小局部变量,减少函数嵌套调用的层数
 楼主| shangelaila 发表于 2010-7-10 14:05 | 显示全部楼层
我把CSTACK改大之后,居然filled to 95%了 - -!
Sat Jul 10 14:15:30 2010: The stack 'CSTACK' is filled to 95% (1952 bytes used out of 2048). The warning threshold is set to 90.%
纠结啊。。。这是为什么啊!!!
香水城 发表于 2010-7-10 14:19 | 显示全部楼层
查查程序中是否有嵌套的调用层次太多了。
sinadz 发表于 2010-7-10 20:41 | 显示全部楼层
嵌套层数不宜太多,不过2楼说局部变量不宜用太多,不太理解
neaphy 发表于 2010-7-10 20:56 | 显示全部楼层
局部变量是在栈空间,所以去检查一下你的各个函数,估计是你在某个函数中定义了一个很大的数组
txcy 发表于 2010-7-10 21:35 | 显示全部楼层
以前一直正常,没改过程序?
 楼主| shangelaila 发表于 2010-7-12 08:02 | 显示全部楼层
7# txcy
程序没改过,运行的时候正常,就是设置断点的时候,会出来那个
IJK 发表于 2010-7-12 09:14 | 显示全部楼层
7# txcy
程序没改过,运行的时候正常,就是设置断点的时候,会出来那个
shangelaila 发表于 2010-7-12 08:02


IAR EWARM有时候在改过设置后,程序没改动,会出现这种情况。最好把整个项目恢复到原来的状态,应该就可以了。另外,注意一下EWARM有没有升级过。
 楼主| shangelaila 发表于 2010-7-12 16:08 | 显示全部楼层
呵呵,因为我把堆栈从1024加到了2048发现还是有这个警告,我就感觉不是被占用的问题
仔细检查发现有个全局数组访问的时候越界了:$
问题解决,结贴给分!谢谢大家
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

120

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部