首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 单片机 >

为什么堆栈设大了溢出,设小了反而不溢出呢?该如何解决

2012-05-20 
为什么堆栈设大了溢出,设小了反而不溢出呢?单片机堆栈设1024K下载进去,没事,只是运行的时候堆栈占用的比例

为什么堆栈设大了溢出,设小了反而不溢出呢?
单片机堆栈设1024K下载进去,没事,只是运行的时候堆栈占用的比例比较大,担心中途不够用,就设大点,设成2048,一下载进去,完了,竟然出现堆栈快要溢出警告:98%…… 这是什么情况。

还有更诡异的情况,看这里,有图有真相!!
http://topic.csdn.net/u/20120505/20/431fab75-9cb3-42d8-aa92-0ef919030c51.html

[解决办法]
我不知道你用的什么单片机,我曾经用过ATMEL128的,也遇到过好像类似的问题,不过不确信是不是同样的。我的问题是这样的,在编译环境里面也有一个设置堆站的。当时因为我的程序比较庞大(数据量比较大),结果一运行程序老出现乱码,堆站溢出。原因原来是这样的,它的编译器把堆站分为了软堆站和硬堆站,一个用于存放中间数据,一个用于类似函数中断的,结果设得那个值是用于硬中断的,最后把设得值调小了最好了,因为硬中断小点了,软中断就大了,所以就将就不溢出了。
可能你没看懂,我就是给个参考,你先明确你设得那个数值的具体含义是什么,比如说我设得那个我以为是软中断,溢出了应该设大点得呀。明确了再看看为什么

热点排行