使用 Visual Studio 2017,以下给出...
struct AAA // 15 bytes
{
double d;
short s;
char a1;
char a2;
char a3;
char s4;
char s5;
};
struct BBB
{
AAA d;
char a4;
};
int main()
{
std::cout << sizeof(AAA) << "\n"; // gives 16
std::cout << sizeof(BBB) << "\n"; // gives 24
getchar();
return 0;
}
问题是...我怎样才能使 sizeof(BBB) 变为 16。
Use #pragma pack(push, 1)
or #pragma pack(1)
强制编译器不要在 2 字节或 4 字节边界上排列结构成员,这使得处理器处理起来更容易、更快。所以该结构包含秘密填充字节为了实现这一目标。但由于填充,这会增加内存使用量。
这是一个精确的解释here https://stackoverflow.com/questions/3318410/pragma-pack-effect
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)