私は自分の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を真剣に改訂する必要があります。誰かが説明を提供していただければ幸いです。ありがとう。