【发布时间】:2020-11-01 10:24:39
【问题描述】:
struct 在 C 中的大小如何?例如下面的:
struct Person {
char* name;
char age;
};
int main(int argc, char* argv[]) {
struct Person person1;
person1.name = "John Smith";
person1.age = 40;
printf("The size of the Person object is: %lu.\n", sizeof(person1));
}
这给了我16 而不是9 的大小。那么struct 是如何对齐的,还是取决于架构或 C 实现?例如,是在 16 字节边界、8 字节边界等上吗?
【问题讨论】:
-
很可能您使用的是 64 位系统,其中“字”(在 CPU 意义上)和指针是 64 位(8 字节)。
-
依赖于实现。
-
@Someprogrammerdude 我明白了——所以所有
structs 都会四舍五入到字长的下一个倍数? -
如果你想了解结构内成员的偏移量(位置),请使用
offsetof宏。 -
这取决于编译器和目标硬件。但是对于您的特定系统,可能是的。
标签: c memory-alignment