我发现当结构体包含指针时会有内存开销。以下是一个例子:
typedef struct {
int num1;
int num2;
} myStruct1;
typedef struct {
int *p;
int num2;
} myStruct2;
int main()
{
printf("Sizes: int: %lu, int*: %lu, myStruct1: %lu, myStruct2: %lu\n", sizeof(int),
sizeof(int*), sizeof(myStruct1), sizeof(myStruct2));
return 0;
}
这在我的64位机器上打印出以下内容:
Sizes: int: 4, int*: 8, myStruct1: 8, myStruct2: 16
除了
myStruct2
的大小,其他所有东西都对我来说很有意义,我认为它只会是12而不是16(sizeof(int*) + sizeof(int) = 12
)。有人能解释一下这是为什么吗? 谢谢!
(我相当确定这一定已经在其他地方问过了,但我找不到。)