求助:栈满了怎么办

lsh800501   2010-7-10 11:49 楼主
程序以前一直跑都没问题,现在出现错误:
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.%


请问怎么回事?为什么突然就这样了?

回复评论 (9)

                                 程序中减小局部变量,减少函数嵌套调用的层数
点赞  2010-7-10 13:28
我把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:05

4楼 quq 

                                 查查程序中是否有嵌套的调用层次太多了。
点赞  2010-7-10 14:19
                                 嵌套层数不宜太多,不过2楼说局部变量不宜用太多,不太理解
点赞  2010-7-10 20:41
                                 局部变量是在栈空间,所以去检查一下你的各个函数,估计是你在某个函数中定义了一个很大的数组
点赞  2010-7-10 20:56
                                 以前一直正常,没改过程序?
点赞  2010-7-10 21:35

程序没改过,运行的时候正常,就是设置断点的时候,会出来那个
点赞  2010-7-12 08:02
7# txcy
程序没改过,运行的时候正常,就是设置断点的时候,会出来那个
IAR EWARM有时候在改过设置后,程序没改动,会出现这种情况。最好把整个项目恢复到原来的状态,应该就可以了。另外,注意一下EWARM有没有升级过。
点赞  2010-7-12 09:14
呵呵,因为我把堆栈从1024加到了2048发现还是有这个警告,我就感觉不是被占用的问题
仔细检查发现有个全局数组访问的时候越界了
问题解决,结贴给分!谢谢大家
点赞  2010-7-12 16:08
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复