Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
例如,我有一个class,
class
类天真{ 上市: 字符一个; 长长 b; 字符 c; 诠释d; };
并根据我的测试程序,一个接一个a地d构建,比如
a
d
一种 - - - - bbbbbbbb c---dddd
-表示未使用。
-
为什么 C++ 不让它更紧密,比如
ac--dddd bbbbbbbb
标准要求类和结构成员以与声明它们相同的顺序存储在内存中。所以在你的例子中,不可能d出现 before b。
b
此外,大多数架构更喜欢多字节类型在 4 或 8 字节边界上对齐。所以编译器所能做的就是在类成员之间留下空的填充字节。
您可以通过自己重新排序成员来最小化填充,以增加或减少大小顺序。或者您的编译器可能有一个#pragma pack选项或类似的东西,它将寻求最小化填充,但可能会牺牲性能和代码大小。阅读编译器的文档。
#pragma pack