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