例として次のコードを作成しました。
#include <iostream>
struct class1
{
uint8_t a;
uint8_t b;
uint16_t c;
uint32_t d;
uint32_t e;
uint32_t f;
uint32_t g;
};
struct class2
{
uint8_t a;
uint8_t b;
uint16_t c;
uint32_t d;
uint32_t e;
uint64_t f;
};
int main(){
std::cout << sizeof(class1) << std::endl;
std::cout << sizeof(class2) << std::endl;
std::cout << sizeof(uint64_t) << std::endl;
std::cout << sizeof(uint32_t) << std::endl;
}
版画
20
24
8
4
したがって、1 つの uint64_t が 2 つの uint32_t と同じ大きさであることを確認するのはかなり簡単です。uint64_t を 2 つの uint32_t に置き換えることを除いて同じである場合、なぜクラス 2 には 4 バイト余分にあるのでしょうか。