There may be padding between the members.
C standard 6.7.2.1(15): Within a structure object, the non-bit-field members and the units in which bit-fields reside have addresses that increase in the order in which they are declared. A pointer to a structure object, suitably converted, points to its initial member (or if that member is a bit-field, then to the unit in which it resides), and vice versa. There may be unnamed padding within a structure object, but not at its beginning.
(14) Each non-bit-field member of a structure or union object is aligned in an implementation-
defined manner appropriate to its type.
There is probably no padding between the members on a modern machine, but C doesn't guarantee it, so don't rely on it.
You can determine if there is padding using the ofsetoff() macro and then manage that with static assert.
aandb. However, in practice, it's unlikely to do so here.