パケットがあるとします
struct Foo
{
short size; // 2
short type; // 2
BYTE data; // 1
//1 byte padding not 3?
};
コンパイル後は、構造体の最後に 1 バイトのパディングが追加された 6 バイトの長さになります。構造体のサイズが 8 バイトになるように、コンパイラは 3 バイトのパディングを追加することになっていませんか? 32 ビットの CPU は 4 バイトのチャンクでデータにアクセスするのが好きなので
ところで、 #pragma pack(1) を使用すると、予想どおり 5 バイトの長さになります。