【发布时间】:2014-04-19 16:31:59
【问题描述】:
我不能减去使用 malloc 声明的两个数组。有什么问题?
#include<stdio.h>
#include<conio.h>
void main()
{
float *a,*b,*c;
int i;
a=(float*)malloc(8*sizeof(float));
b=(float*)malloc(8*sizeof(float));
c=(float*)malloc(8*sizeof(float));
a[1]=8.0;a[2]=9.0;a[3]=1.0;a[4]=2.0;a[5]=0.0;a[6]=8.0;a[7]=18.0;a[8]=2.0;
b[1]=10.0;b[2]=1.0;b[3]=13.0;b[4]=0.0;b[5]=100.0;b[6]=1.0;b[7]=20.0;b[8]=0.0;
for(i=1;i<=8;i++)
{
c[i]=a[i]-b[i];
printf("%d",c[i];// IAM GETTING ERROR HERE
}
getch();
}
【问题讨论】:
-
我看到你使用
a[8]和b[8]。您正在访问超出您从8*sizeof(float)请求的区域。你的数组索引应该从 0 开始,例如a[0],a[1]...你可以上升到a[7]。修复此问题并再次运行。还要确保 a、b、c 不为空。从 0 开始数组索引。如果您希望结果以十进制格式显示,请在 printf 中使用 %f 而不是 %d。您还错过了 printf 的).此外,您应该通过执行free(a)等释放请求的内存。