У меня есть структура, из которой я хочу рассчитать его размер:
#pragma pack(push,4)
struct MyStruct
{
uint32_t i1; /* size=4, offset=0. */
uint32_t i2; /* size =4 offset =4 */
uint16_t s1; /* size =2 offset=8 */
unsigned char c[8]; /* size=8 offset=12*/
uint16_t s2; /* size=2 offset=20. */
uint16_t s3; /* size=2 offset=24. */
} ; // total size is 26
static_assert(sizeof(MyStruct) == 24, "size of MyStruct incorrect");
#pragma pack(pop)
Статическое утверждение показывает, что размер 24, но мой расчет показывает, что он должен быть 26.
Почему размер 24?
Я работаю над Windows 7, 32-битным приложением, используя visual studio 2012