Подумайте, что при замедлении массива при объявлении массива индекс 0 не считается первым элементом, но когда вы, например, используете адрес этих данных, первый индекс которого учитывается, давайте объявим массив
int x[5];
тем самым вы сообщаете компилятору выделить 5 доступных целочисленных адресов памяти. Таким образом, вы получите выделенную область, и ваш размер будет равен 5. Предположим, что компилятор даст вам 5 адресов, начиная с 0x20000580--0x20000584, записав
x[0] = data0;// you are writing data to the address of 0x20000580-> data0
x[1]= data1;// 0x20000581-> data1
...
x[4]= data4 //0x20000584->data4
так что в вашем случае, когда вы пытаетесь написать x [размер], который равен x [5], вы пытаетесь получить доступ к нераспределенной области, и это вызывает серьезное прерывание сбоя, и вы столкнетесь с неуправляемым руководствомисключение.