C не выполняет проверку границ массивов.Если у вас есть 5-элементный массив, C с радостью позволит вам присвоить arr[5]
, arr[100]
или даже arr[-1]
.
Если вам повезет, это просто перезапишет неиспользуемую память и вашПрограмма все равно будет работать.
Если вам не повезет, вы перезапишете другие переменные в вашей программе, метаданные для malloc
или ОС, и произойдут плохие вещи.Привыкайте видеть фразу «ошибка сегментации».