#include <iostream>
using namespace std;
#pragma pack(push, 4)
struct Foo
{
char ch; //1
char ch2; //1
char ch3; //1
char ch4; //1 _4
char ch5; //1
short num; //2
char ch6; //1 _4
int num2; //4 _4
};
#pragma pack(pop)
int main() {
cout << sizeof(Foo);
return 0;
}
为什么输出是16字节?我认为它必须是12,因为:结构中字段对齐的奇怪行为
4 char = 4 bytes
char + short + char = 4 bytes
int = 4 bytes
那么有人可以解释其余4个字节在哪里?
“short”不仅在您的实施方面有两大优势,而且还具有对齐方式2. – Deduplicator