#include <bits/stdc++.h>
using namespace std;
class Trie{
int a;
Trie * child[26];
};
class Trie2{
int a;
char b;
Trie * child[26];
};
int main()
{
cout<<sizeof(Trie)<<endl;
cout<<sizeof(Trie2)<<endl;
return 0;
}
两者都输出 216 字节。我可以理解第一个(4(整数)+ 4(填充)+ 26 x 8)
但是无法理解第二个Trie2。
运行代码。期待不同的结果
Trie
和
Trie2
最终都占用 216 个字节。即使
Trie2
有一个额外的
char
变量,编译器也会在其后面添加填充,以确保指针数组 (
child[26]
) 从 8 字节边界开始(这是 64 位系统上的指针所必需的) )。这种填充使得两个类的总大小相同,尽管两个类的结构略有不同。