内存对齐

首先由一个程序引入话题

 

为什么会出现那样的情况呢,
首先,先引入内存对齐的定义:
#pragma pack(n)
1. 对于结构体的各个成员,第一个成员在内存中的偏移位置为零,也就是说,从他开始存放数据。以后每一个成员的偏移量必须是min(#pragma pack(n)中指定的数,此数据自身长度) 的倍数。举个例子,第一个结构体中,char 型数据偏移量为0,第二个数据为int 型,占4个字节,在LINUX下默认#pragma pack(n)  中N为8 ,所以第二个数据成员的偏移量必须是8,4中较小的数的倍数,即4的倍数,所以就是4了。
2.在数据称原完成对齐后结构体也要完成对齐,对齐将按照 min (#pragma pack(n)中指定的数,结构体中数据长度最大的那个数据)对齐,最后的内存占用空间,应该是那个要对齐的倍数。
在第一个结构体旁边有笔者的分析,希望大家多多指点。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值