Я прочитал эту статью о строгом псевдониме C/С++. Я думаю, что то же самое относится к С++.
Как я понимаю, строгое псевдонижение используется для изменения кода для оптимизации производительности. Поэтому два указателя разных (и не связанных между собой типов С++) типов не могут ссылаться на одно и то же место в памяти.
Означает ли это, что проблемы могут возникать только при изменении памяти? Помимо возможных проблем с выравниванием памяти.
Например, обработка сетевого протокола или де-сериализация. У меня есть массив байтов, динамически распределенный и пакетная структура правильно выровнены. Могу ли я reinterpret_cast
его передать в мою структуру пакетов?
char const* buf = ...; // dynamically allocated
unsigned int i = *reinterpret_cast<unsigned int*>(buf + shift); // [shift] satisfies alignment requirements