次のように定義された構造体があります。
struct smth
{
char a;
int b[];
};
この構造体を呼び出すsizeof
とoffsetof
:
cout << sizeof(struct smth) << endl;
cout << offsetof(struct smth, b) << endl;
出力は次のとおりです。
4
4
stuct のサイズが 4 で、char が 1 バイトを使用しているのに、int 配列のオフセットが 4 なのはなぜですか? なぜある種のパディングがあるのですか?また、int 配列がまったくスペースを占有しないのはなぜですか?