我意识到当它们包含指针时,我的结构中存在内存开销。这里有一个例子:
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
)。
谁能解释我为什么会这样?谢谢!
(我很确定这一定是在其他地方问过的,但我找不到。)