Its to do with struct member alignment. Code can be compiled with different alignments either 1, 2, 4, 8, 16 bytes (MS VC++ 6), 8 is the default setting. I compiled the code different alignments:
1 byte - sizeof = 6
2 byte - sizeof = 6
4 byte - sizeof = 8
8 byte - sizeof = 8
16 byte - sizeof = 8