私はCで次のネストされた構造体を持っています。(64ビット)
typedef struct {
int a;
int b;
int c;
struct {
int ab;
long bc;
}
int d;
} Test;
I see that,
a = 4 bytes
b = 4 bytes
c = 4 bytes
padding1 = 4 bytes
inner structure = 16 bytes ( 4 bytes for ab, 4 bytes padding, 8 bytes for bc)
d = 4 bytes
padding2 = 4 bytes
sizeof(Test)は40バイトを返します。
私の質問:
padding1->なぜこれが4バイトなのですか?これは、内部構造自体を整列させる必要があるためですか?(また、8バイト(長い)または16バイト(内側のサイズ)の境界に揃えられていますか?)
padding2->構造内で行われるアライメントの最大値(8)のため、これは4バイトのパディングですか?
ありがとう、