假設我有這個數據結構爲什麼我沒有得到一個內存異常這裏
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個索引 –