Warum die Klassengröße zunimmt, wenn int64_t in int32_t @ geändert wi

n meinem ersten Beispiel habe ich zwei Bitfelder mitint64_t. Wenn ich kompiliere und die Größe der Klasse erhalte, erhalte ich 8.

class Test
{
    int64_t first : 40;
    int64_t second : 24;
};

int main()
{
    std::cout << sizeof(Test); // 8
}

Aber wenn ich das zweite BitField in ein @ ändeint32_t Die Größe der Klasse verdoppelt sich auf 16:

class Test
{
    int64_t first : 40;
    int32_t second : 24;
};

int main()
{
    std::cout << sizeof(Test); // 16
}

Dies geschieht sowohl auf GCC 5.3.0 als auch auf MSVC 2015. Aber warum?

Antworten auf die Frage(8)

Ihre Antwort auf die Frage