Пожалуйста, скажите мне разницу между стеком и кучей относительно ниже кодаразница между стека и кучи
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
}
Я знаю, что аранжировка статический массив, и я доступ адрес какого-то другого процесса, когда я обр [ 3000], что дает ошибку SIGSEGV. Но я не понимаю, почему [4000] не даст мне никакой ошибки во время выполнения, т. Е. Сигнала SIGSEGV.
Благодаря
И, что еще хуже, неожиданные эффекты могут означать необнаруженное повреждение данных. – ninjalj
@sth, спасибо за разъяснение моих сомнений. И спасибо всем, кто ответил. – sach