C++字节对齐总结+疑问

先看程序和图吧

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 如果没有按照默认的字节对齐,那按照结构体最大长度对齐,两种结果都正好符合。这种理解错了没?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值