Блин, ты же жёстко указываешь в своём примере размер элементов.
uint16_t. А я добавил бит флага. И стало не 16, а 17. И байтов -
два. А в структуре место жёстко для 16 бит. В случае, когда я указываю свой, корректно объявленный тип элемента, размер выбирается согласно этому типу и нет проблем.