假设我有这个数据结构为什么我没有得到一个内存异常这里
struct foo{
int a;
int b;
};
现在我想创造的2项的数组。所以我这样做
struct foo* farry = (struct foo*) malloc(2 * sizeof(struct foo));
请纠正我,如果我错了上述将创建2个槽有foo结构默认初始化?那是对的吗 ?如果是的话,如果我做这个
struct foo* farry = (struct foo*) malloc(2 * sizeof(struct foo));
farry[0].a =1;
farry[1].a =2;
farry[2].a =3;
farry[3].a =4;
farry[4].a =5;
for(i=0 ; i<=4 ; i++)
{
printf("Value %d \n",farry[i].a);
}
那么为什么在farry[2].a =3
它没有告诉我一个内存错误发生。相反,它只是打印1,2,3,4,5
C非常宽松,阵列超出界限。访问一个未定义的数组越界会给你一个错误,虽然 –
http://stackoverflow.com/documentation/c/364/undefined-behavior#t=201611100730536038753 –
@PrasunJajodia好的谢谢你清理,所以我应该可靠地进行1,2是正确的,因为只有2个索引 –