C の malloc 関数を把握しようとして、次のコードを書きました。
int i;
int *arr = (int*)malloc(5*sizeof(int));
if(arr==NULL){
printf("Failed to allocate memory for arr...\n");
exit(1);
}
これは、配列に追加できる要素が5つだけであることを意味すると思いました。それが本当かどうかをテストするために、次のコードを追加しました。
arr[0] = 1;
arr[1] = 2;
arr[2] = 3;
arr[3] = 4;
arr[4] = 5;
arr[5] = 6;
arr[6] = 7;
arr[7] = 8;
arr[8] = 9;
for(i=0;i<9;i++){
printf("%d\n",arr[i]);
}
驚いたことに、そのコードは完全にコンパイルされ、実行されました。それはどのように可能でしたか?