Abd*_*lah 4 c malloc dynamic-arrays
我只是在梳理我的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;
}
Run Code Online (Sandbox Code Playgroud)
问题是程序运行正常!据我所知,我为3个整数的数组分配内存.所以基本上当我尝试放入一个值时arr[3] ,应该有一个segmentation fault没有分配给它的内存.但它工作正常并打印出值4.要么这是一些奇怪的行为,要么我真的需要修改基本的C.如果有人能提供一些解释我会非常感激.谢谢.
您可以随时获得分段错误,这次您"幸运".这是未定义的行为,因此您可能会在其他时间遇到seg错误.
C 没有做任何边界检查,所以虽然Java会抱怨,但C很乐意做你要求它做的任何事情,甚至对程序本身的不利.
这既是它的主要优势之一,也是弱点.