整数边界对齐方式_对齐问题

对齐问题

.txt2

机会靠自己争取,命运需自己把握,生活是自己的五线谱,威慑呢们不亲自

演奏好它?更改

C

编译器的缺省字节对齐方式

在缺省情况下,

C

编译器为每一个变量或是数据单元按其自然对界条件分配空间。一般地,

可以通过下面的方法来改变缺省的对界条件:

·

使用伪指令

#pragma pack (n)

C

编译器将按照

n

个字节对齐。

·

使用伪指令

#pragma pack ()

,取消自定义字节对齐方式。

另外,还有如下的一种方式:

·

__attribute((aligned (n)))

,让所作用的结构成员对齐在

n

字节自然边界上。如

果结构中有成员的长度大于

n

,则按照最大成员的长度来对齐。

·

__attribute__ ((packed))

,取消结构在编译过程中的优化对齐,按照实际占用字

节数进行对齐。

以上的

n = 1, 2, 4, 8, 16...

第一种方式较为常见。

( via http://blog.csdn.net/wenddy112/articles/300583.aspx )

下面有一道在

CSDN

论坛

上讨论火热的题:

Intel

和微软和本公司同时出现的面试题

#pragma pack(8)

struct s1{

short a;

long b;

};

struct s2{

char c;

s1 d;

long long e;

};

#pragma pack()

1.sizeof(s2) = ?

2.s2

c

后面空了几个字节接着是

d?

感谢

redleaves(ID

最吊的网友

)

的解答,结果如下:

sizeof(S2)

结果为

24.

成员对齐有一个重要的条件

,

即每个成员分别对齐

.

即每个成员按自己的方式对齐

.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值