В моем первом примере у меня есть два битовых поля, используя int64_t
. Когда я компилирую и получаю размер класса, я получаю 8.
class Test
{
int64_t first : 40;
int64_t second : 24;
};
int main()
{
std::cout << sizeof(Test); // 8
}
Но когда я изменяю второй битфейд как int32_t
, размер класса удваивается до 16:
class Test
{
int64_t first : 40;
int32_t second : 24;
};
int main()
{
std::cout << sizeof(Test); // 16
}
Это происходит как на GCC 5.3.0, так и на MSVC 2015. Но почему?