在线情况
楼主
  • 头像
  • 级别
    • 积分3
    • 经验46
    • 文章3
    • 注册2011-05-18
    一个非常奇怪的堆栈溢出的问题
    [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]
    微控网感谢您的参与
    在线情况
    2
    • 头像
    • 级别
    • 门派
    • 职务总版主
    • 声望+9
    • 财富5
    • 积分3065
    • 经验390701
    • 文章6744
    • 注册2006-03-07
    请问你用的是什么型号MCU?
    程序主要使用了那些算法和占用多少数组?
    先了解一下....
    [COLOR=#0000ff]欢迎发贴分享设计心得、开源DIY...[/COLOR]
    在线情况
    3
    • 头像
    • 级别
      • 积分3
      • 经验46
      • 文章3
      • 注册2011-05-18
      数组不会溢出的,如果是数组溢出的话,应该可以定位下来,但是现在的问题是问题无法聚焦(不是某个特定的地方引起的现象)
      微控网感谢您的参与
      Powered by LeadBBS 9.2 .
      Page created in 0.1406 seconds with 5 queries.