以下のコードに関して、スタックとヒープの違いを教えてください
int main()
{
int arr[3];
int *a;
arr [5] = 6; // out of bound but it will not give error.
arr [3000] = 8 ; //SIGSEGV
a = malloc (sizeof (int));
a[4] = 6;
a[4000] = 8; //No error
}
arrは静的配列であり、arr [3000]を実行すると、他のプロセスのアドレスにアクセスしているため、SIGSEGVエラーが発生します。しかし、なぜa[4000]で実行時エラー(SIGSEGV信号)が発生しないのかわかりません。
ありがとう