|
测试芯片:STC90C516RD+
使用语言:C
就是一段简单的程序
#define LEN 485
unsigned int box[LEN];
unsigned char LED_NUM[10]={};//先行省略,A~F数码管上显示时候用
main(){
unsigned int box[LEN]={0};
unsigned char i=0;
for(i=0;i<LEN;i++){
box=3*i;
}
i=0;
while(1){
led_show(box,LED_NUM);//事先写好的在数码管上显示数字的程序
i++;
if(i==LEN){
i=0;
}
}
}
当LEN大到一定程度的时候,数码管的显示就会“神经错乱”,个人猜测其原因应该是box申请的内存越界了,导致冲毁的LED_NUM
但是不能理解的是:为毛是从后面往前面冲垮的?比如,LEN为485时候刚好不冲毁,LEN为486时候,LED_NUM[8]和LED_NUM[9]被冲毁,导致8,9显示不正常,LEN为487时,6和7也就阵亡了……可是为什么是从后向前的……
还有,main函数使用的内存为485*2+1=971字节
如果现在写一个程序,main函数使用1字节的内存,子函数f1使用970字节内存,函数f2也使用970字节内存,main分别同时调用两个函数,会不会溢出?(尚未实验)
还有,Keil里面这个界面这几个选项的含义到底是什么?
尤其是那个Operating |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
阿莫论坛20周年了!感谢大家的支持与爱护!!
知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)
|