我只是稍微复习一下我的 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。如果有人能提供一些解释,我将不胜感激。谢谢。