Looks like it. I'll assume an IPAddress is four bytes. So without your byte, that struct is 16 bytes. Adding a single byte jacks it up to 20, so my first thought is that the compiler is aligning on four byte boundaries. See if there's compiler switch you can apply to get byte alignment. Alternatively, keep a separate array for ct412s.