Padding
Remember, members of a struct are usually padded to ensure they are aligned on their natural boundary:
struct t
{
    int a, b, c, d;    // a is at offset 0, b at 4, c at 8, d at 0ch
    char e;            // e is at 10h
    short f;           // f is at 12h (naturally aligned)
    lo...