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

未初始化的数组和初始化的数组在栈上是怎么分配的

2014-04-26 
未初始化的数组和初始化的数组在栈上是如何分配的程序如下:void test1(){char data[300]{0}}void test2(

未初始化的数组和初始化的数组在栈上是如何分配的
程序如下:

void test1()
{
  char data[300]={0};
}

void test2()
{
  char data[300];
  data[299] = 50;
  lcdAdjustBacklight(data[299]);//防止data被优化掉
}


芯片的内存只剩200Bytes,当运行test1的时候,芯片会死掉,因为栈溢出了。但是运行test2的时候就没问题,所以是不是未初始化的数组是不是不在栈上分配空间的?
[解决办法]
我也推测一下
char data[300]={0};
可能执行的操作是一个memcpy,第一个元素是0,其它的是默认值,长度是300。
char data[300];
data[299] = 50;
lcdAdjustBacklight(data[299]);
lcdAdjustBacklight有可能因为优化还是传值50,这时候data其实不存在。

单片机编程?在仿真器ide里,看看汇编可能更容易确定问题。

热点排行