假设以下代码:
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
),但在我的情况下,我不负责这部分。