gct*_*gct 6 c 64-bit alignment
我对64位平台上uint32_t类型的对齐感到好奇.规范说uint32_t应该是给定的位宽,实际上它似乎是:
> printf("sizeof(uint32_t): %zd\n", sizeof(uint32_t));
sizeof(uint32_t): 4
Run Code Online (Sandbox Code Playgroud)
但后来我有一个结构:
typedef struct A {
uint32_t a;
uint32_t b;
} A;
Run Code Online (Sandbox Code Playgroud)
但是,令人惊讶的是:
> printf("sizeof(A): %zd\n", sizeof(A));
sizeof(A): 16
Run Code Online (Sandbox Code Playgroud)
由于某种原因,uint32_t是否为8字节对齐?下面真的是一个8字节的类型吗?