Memory Alignment

关于Memory Alignment

空了很久,都没整理出一篇日志来。今天,终不忍继续这么空着了!本来是打算写点自己的东西,无奈我的理解不够深入系统,头脑中都是一些碎片。那就干脆收录几篇文章的链接,供进一步学习吧!

(1)《内存对齐的规则以及作用》(原文地址)    有图,比较形象。

(2)《C++中的内存对齐》(原文地址)    也有图。

(3)"Data structure alignment"(原文地址)    维基百科的文章,练习英文不错:)。

另外,很偶然地,我也在《深入理解计算机系统》中读到了介绍内存对齐的一节“3.10 对齐(Alignment)”。

既然读过几篇文章了,不妨写一点自己的理解吧!

CPU在访问内存(如:读取数据)时,为了提高访问速度,访问的内存地址一般是2的幂数。相应的,编译器在编译代码时,为了满足CPU的这个特性,会按照2的幂来给数据分配存储地址,不足2的幂的地址空间会填充无意义的数据(pad)。编译器所做的这个处理,就是内存对齐(Memory Alignment)。

补充一点(或许今后用得着):在VC中,动态更改内存对齐方式的办法是使用
#pragma pack(n)
注:n指示编译器按照n字节边界对齐。若n不存在,则表示取消自定义字节对齐方式。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值