Entendo o alias estrito de C / C ++ corretament

Eu liEste artigo sobre aliasing estrito de C / C ++. Eu acho que o mesmo se aplica ao C ++.

Pelo que entendi, o aliasing estrito é usado para reorganizar o código para otimização de desempenho. É por isso que dois ponteiros de tipos diferentes (e não relacionados no caso de C ++) não podem se referir ao mesmo local de memóri

Isso significa que os problemas podem ocorrer apenas se a memória for modificada? Além de possíveis problemascom alinhamento de memória.

Por exemplo, lidar com protocolo de rede ou desserialização. Eu tenho uma matriz de bytes, alocada dinamicamente e estrutura de pacotes está alinhada corretamente. Eu possoreinterpret_cast na minha estrutura de pacotes?

char const* buf = ...; // dynamically allocated
unsigned int i = *reinterpret_cast<unsigned int*>(buf + shift); // [shift] satisfies alignment requirements

questionAnswers(2)

yourAnswerToTheQuestion