допустим у меня есть:C++ массив доступа
int test[10];
на 32-битной машине. Что, если я:
int b = test[-1];
, очевидно, что это большой нет-нет, когда она не приходит получить доступ к массиву (из границы), но что в действительности происходит? Любопытно
Я получаю доступ к 32-битовому слову «до» моего массива?
int b = *(test - 1);
или просто обращаясь к очень далекому слову (начиная с места «проверки» памяти)?
int b = *(test + 0xFFFFFFFF);
0xFFFFFFFF является дополнением представление этих двух по десятичной -1
Это неопределенное поведение. – juanchopanza
@ alex23: Это неопределенное поведение на C99 также. Ответы в связанном с вами вопросе не противоречат этому, и эти ответы будут одинаково применимы к C++. –