一个非常奇怪的堆栈溢出的问题

楼主
一个非常奇怪的堆栈溢出的问题
[P]现象:
1、刚把程序载进去,还没运行,堆栈就快满了

刚刚把程序下载进去,还没有运行,就提示堆栈快溢出了:Wed Apr 25 16:12:28 2012: The stack 'Stack' is filled to 99% (4992 bytes used out of 5000). The warning threshold is set to 90.%  


我尝试过:把栈设成2048,3000,4000,5000 均无济于事。 如果是数组越界或者中断造成的问题,那么应该是运行之后产生的,而不应该是下载进去就产生。

2、程序运行起来后,堆栈使用量有变回正常状态。

程序运行起来后,堆栈使用量有变回正常状态,那开始的中断溢出是什么情况??


3、删除掉主函数中的某些函数或者把在main之前的某些注释掉的函数回复,可以消除下载堆栈溢出的症状,但是运行到某些函数(固定的)内的时候,还是会出现堆栈溢出警告。


4、如果运行中出现堆栈溢出警告的话,没执行一步,堆栈内的数据一直都有变化,变化区域非常的大,而且数据均为 3f ff 等数据 3f ff 出现概率最大 最多几乎全是。

5、堆栈设成4000或者5000的时候,刚下载进去就报堆栈要快溢出,占堆栈的98%/99%.但是诡异的是,我把堆栈设成2048的时候,一下载进去报警堆栈要溢出,但是所占的却是90% or 93% 比4000和5000还少. 异或不解。非常诡异 把堆栈设成1000 ,竟然没事了,下载和运行都不会出现堆栈溢出警告。更加不理解了  

6、删掉sprintf()函数后,下载和运行都没有出现堆栈溢出警告。
但是sprintf()我以前的版本也有用到,没有出现过这个问题。

高手出招灭到它吧!!!!!!!!!!
[/P][P]相关图片在这里有:[/P][P][URL=http://topic.csdn.net/u/20120505/20/431fab75-9cb3-42d8-aa92-0ef919030c51.html]http://topic.csdn.net/u/20120505/20/431fab75-9cb3-42d8-aa92-0ef919030c51.html[/URL]
[/P]
1楼
请问你用的是什么型号MCU?
程序主要使用了那些算法和占用多少数组?
先了解一下....
2楼
数组不会溢出的,如果是数组溢出的话,应该可以定位下来,但是现在的问题是问题无法聚焦(不是某个特定的地方引起的现象)

电脑版 Page created in 0.1719 seconds width 3 queries.