先看程序和图吧
1 linux g++ 4.8.1版本
#include <iostream>
2
3 using namespace std;
4
5 struct A
6 {
7 char a;
8 long double b;
9 int c;
10 };
11
12
13 int main()
14 {
15 cout << sizeof(A) << endl;
16 cout << sizeof(long double) << endl;
17 cout << sizeof(B) << endl;
18
19 }
vs2012 代码
#include <iostream>
using namespace std;
struct A
{
char a;
long double b;
int c;
};
int main()
{
cout << sizeof(long double) << endl;
cout << sizeof(A) << endl;
int i;
cin >> i;
}
结果:
分析: 用#pragma pack(n)调节的字节序没疑问。 但默认的字节序有点小疑问
1 网上流传是gcc是4字节对齐,vc是8字节对齐,按照这种结果分析 第一个的输出有问题。
2 如果没有按照默认的字节对齐,那按照结构体最大长度对齐,两种结果都正好符合。这种理解错了没?