我只是把我的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) –
我同意。这个或类似的问题似乎每隔几天就会发布一次。 –