Я знаю, что это хэшируется много раз, но сегодня я столкнулся с случаем, который потряс мое понимание математики указателя / индекса массива.
Как я всегда это понимал, & mybuff [10] и (& mybuff + 10) являются эквивалентными способами обращения к одной и той же памяти.
Однако я провел утро, борясь со случаем, когда:
memcpy(&mybuff+10,&in,8);
переполнял буфер при компиляции с оптимизацией и работал очень хорошо при компиляции для отладки.
В то же время,
memcpy(&mybuff[10],&in,8);
отлично работал в обоих случаях.
Большое спасибо за любые идеи или указатели.