次のコードを想定します。
struct A
{
int a;
int b;
};
char* buffer = receivedFromSomeWhere();
A a = *reinterpret_cast<A*>(buffer + 1);
buffer + 0
が のサイズでアラインされているint
場合、buffer + 1
アラインされていないメモリ上にある可能性が最も高くなります。デフォルトのコピー コンストラクターは、2 つの整列されていない int メンバーa
とb
. x86/x64 アーキテクチャでは、コードの速度が低下することを除いて、コピーの構築に悪影響を及ぼしa
ますか?
適切なシリアライゼーションにより、整列されていないメモリの問題が解決されることはわかっています (A
構造体が で整列されるように、どこかにパディングを追加することによりbuffer
) が、私の場合、この部分については責任を負いません。