С философией всегда доверяй программисту. А также отсутствие проверки границ позволяет программе на C работать быстрее.

уC дифференцируется в случае индекса массива вне границы

#include <stdio.h>
int main()
{
    int a[10];
    a[3]=4;
    a[11]=3;//does not give segmentation fault
    a[25]=4;//does not give segmentation fault
    a[20000]=3; //gives segmentation fault
    return 0;
}

Я понимаю, что он пытается получить доступ к памяти, выделенной для процесса или потока в случаеa[11] или жеa[25] и это выходит за пределы стека в случаеa[20000].

Почему компилятор или компоновщик не выдает ошибку, они не знают о размере массива? Если нет то какsizeof(a) работать правильно?

Ответы на вопрос(9)

Ваш ответ на вопрос