Предполагая следующий код:
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
), но в моем случае я не несу ответственности за это часть.