返回信息流这是加一个数组报错的程序
我新加了几个图,分别是我把数组声明为a[43],a[50],a[100]报错的图
while(1)
{
int j=0x00;
float sum=0;
float ADS;
float power;
int ADS1;
int a[43];
for(i=230.0;i<=2750.0;i+=60.0)
{
Chose_RF(i);
Chose_Path(i);
serial_busy=0;
Flag2=j;
Sendchar(Flag1,Flag2);
delayX10ms(3);
Set_ADF4350_Freq(i);
delayX10ms(3);
a[j]=i1;
power=pow(10,(40*(2.2*a[j]/4096-0.85)-60)/10);
sum+=power;
j++;
}
ADS=((10*log10(sum/43)+60)/40+0.85)*4096/2.2;
serial_busy=0;
Sendchar(Flag1,Flag3);
delayX10ms(3);
ADS1=(int)ADS;
exchange(ADS1);
serial_busy=0;
Sendchar(lbit,hbit);
delayX10ms(3);
}
这是不用数组后的,没有报错
while(1)
{
int j=0x00;
float sum=0;
float ADS;
float power;
int ADS1;
for(i=230.0;i<=2750.0;i+=60.0)
{
Chose_RF(i);
Chose_Path(i);
serial_busy=0;
Flag2=j;
Sendchar(Flag1,Flag2);
delayX10ms(3);
Set_ADF4350_Freq(i);
delayX10ms(3);
power=pow(10,(40*(2.2*i1/4096-0.85)-60)/10);
sum+=power;
j++;
}
ADS=((10*log10(sum/43)+60)/40+0.85)*4096/2.2;
serial_busy=0;
Sendchar(Flag1,Flag3);
delayX10ms(3);
ADS1=(int)ADS;
exchange(ADS1);
serial_busy=0;
Sendchar(lbit,hbit);
delayX10ms(3);
}
虽然说这个数组没必要写上,但是我感觉加上也无伤大雅啊,为什么会爆出错,说什么地址溢出呢,真是纳闷儿,求指点!
这是一条镜像帖。来源:北邮人论坛 / cpp / #79092同步于 2014/5/4
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
就是多定义了一个数组就地址溢出,好奇怪啊
jianxing
2014/5/4镜像同步23 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
for 循环和是不是整数没有关系
16 进制只是写起来的表示形式而已, 和 j = 0 没区别
LZ 给一下 i 的定义呗, 没看到定义
【 在 AK47 的大作中提到: 】
: 1.for循环里只能为整数。
: 2.溢出是因为j为十六进制。
【 在 fancl20 的大作中提到: 】
: for 循环和是不是整数没有关系
: 16 进制只是写起来的表示形式而已, 和 j = 0 没区别
: LZ 给一下 i 的定义呗, 没看到定义
i是在头文件里面定义的。double i;
可能不是这个数组溢出了, 因为多定义了这个数组导致其他变量在栈上的地址改变, 原来某个溢出没有访问到不能访问到的地址所以没报错现在报错了.
还有个可能是栈空间用完了单纯的栈溢出..
能定位到哪句语句溢出么
【 在 jianxing 的大作中提到: 】
: i是在头文件里面定义的。double i;
恩,我搞错了,删掉了。
我记忆中,for循环里默认为int,否则自动转换,记忆中是这样子的。
【 在 fancl20 的大作中提到: 】
: for 循环和是不是整数没有关系
: 16 进制只是写起来的表示形式而已, 和 j = 0 没区别
: LZ 给一下 i 的定义呗, 没看到定义
【 在 changzhu 的大作中提到: 】
: 不要在while里面定义变量
: 加入数组是48个int,不加是5个,加入数组内存是不加数组的十倍
: 这也看不出你循环执行了多少遍
是不是因为在循环,然而数组没有刷新啊