Время от времени у меня будет ошибка, например, следующая:
unsigned int* x = calloc(2000, sizeof(unsigned int));
printf("%d", x[2000]);
Я вышел за пределы выделенной области, поэтому я получаю сигнал EXC_BAD_ACCESS во время выполнения. Мой вопрос: как это обнаружено? Кажется, что это просто бесшумно вернуло бы мусор, так как у меня только один байт, а не, скажем, полная страница. Какая часть системы мешает мне просто вернуть мусорный байт в x + 2000
?