本帖最后由 Wxy8030 于 2009-10-20 14:36 编辑
以前从来没仔细研究这玩意,但总是隐约觉得既然不是编译器自动分配的,那么就有设置错误的可能......
今天仔细看了一下关于该尺寸的设置,发现设置的结果很难验证是否正确,我在map文件里找了半天,也没找到关于该尺寸的实际使用数量!
比如现在一般只设置三个尺寸,IRQ、SVC以及USR,其中USR和IRQ是肯定会用到的,就拿IRQ来说吧,如果在IRQ中要用到临时变量,编译器实际上就是在进入IRQ的时候给了一个临时变量的指针,至于该指针是否超出了它允许的使用范围,编译器并不检查,如果IRQ的堆尺寸设置为0x80,而实际上你定义了一个200字节的数组,编译器照样不会报任何警告或者错误!
不知道兄弟们是怎么对付这个可能出现BUG的问题的?如何验证“栈”尺寸设置的是否合理,即能保证程序的正确运行,又不至于浪费很多RAM空间! |