我随机创建了一个Struct,它的大小让我感到惊讶,因为结果不等于我的计算结果:
int main( int argc, char ** argv ) {
struct S
{
int i;
int b;
int c;
long int e;
};
cout << sizeof (struct S) << endl; //sizeof is still an operator
return 0;
}
Run Code Online (Sandbox Code Playgroud)
通常,3*int + 1*long int = 3*4 + 8 = 20.
但结果是24.
这4个字节来自哪里?
你struct的填充量是四个字节,大概是放在long int8字节的边界上,以加快对它的访问.这与平台有关:并非所有编译器都会添加这些字节.