Предполагая следующий код:
struct A
{
int a;
int b;
};
char* buffer = receivedFromSomeWhere();
A a = *reinterpret_cast<A*>(buffer + 1);
Если buffer + 0 выровнено по размеру int, buffer + 1 будет, скорее всего, в неизмененной памяти. Конструктор копии по умолчанию, вероятно, с радостью скопирует два неглавных элемента int a и b.
На архитектуре x86/x64, за исключением замедления кода, повлияет ли она на конструкцию копирования a любым неприятным способом?
Я знаю, что хорошая сериализация разрешит проблему с неравнозначной памятью (возможно, добавив где-нибудь где-нибудь, чтобы структура a была выровнена в buffer), но в моем случае я не несу ответственности за это часть.