#pragma pack()

适用情景:

    struct,union,class等复合(aggregate)数据类型


语法:

#pragma pack(n)       // n = 1, 2, 4, 8, 16

struct S {            // 注意:此处必须是结构体的声明
        short a;
        long b;
        char c;
        ...
};

#pragma pack()        // 设置回默认值,一般为8


内存对齐的好处:

    对于一些硬件平台适当的对齐能够提高存取效率


内存对齐规则:

    1. 从复合数据类型的第一个成员开始

    2. 对齐值取MIN(当前数据成员的字节长度,#pragma pack中指定的值)

    3. 复合数据类型作为数据成员时,“字节长度”定义为所包含的成员的最大字节长度


个人感觉比较详尽和清楚的解释:

    http://www.sf.org.cn/Article/base/200509/260.html

    http://xiekeli.blogbus.com/logs/148537651.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值