Я предполагаю, что вы приходите с Java или Java-подобного языка, где, когда вы выходите из границы массива, вы получаете исключение «index index out of bounds».
Ну, C ожидает от вас большего; он экономит пространство, которое вы просите, но он не проверяет, выходите ли вы за пределы этого накопленного пространства. Как только вы это сделаете, как указано выше, у программы есть такое ужасное неопределенное поведение.
И помните о будущем, если у вас есть ошибка в вашей программе, и вы не можете ее найти, и когда вы перейдите код / отлаживайте его, все кажется ОК, есть хороший шанс, что вы «вне пределов» и доступ к нераспределенному месту.