我只是把我的C概念搞糊塗了,我對某些行爲感到困惑。考慮下面的代碼片段:動態數組混淆
#include<stdio.h>
#include<stdlib.h>
int main(){
int * arr;
arr= malloc(3*sizeof(*arr));
arr[0]=1;
arr[1]=2;
arr[2]=3;
arr[3]=4;
printf("value is %d \n", arr[3]);
return 0;
}
問題是程序運行正常!據我瞭解,我爲3個整數的數組分配內存。所以基本上當我嘗試在arr[3]
中設置一個值時,應該有一個segmentation fault
,因爲沒有分配內存。但它工作正常,並打印值4. 這是一個奇怪的行爲,或者我認真需要修改基本C.請任何人都可以提供一些解釋我會高度讚賞它。 謝謝。
已經看過這麼多次:[數組大於分配?]可能重複(http://stackoverflow.com/questions/8057584/array-is-larger-than-allocated) –
我同意。這個或類似的問題似乎每隔幾天就會發布一次。 –