内存对齐(memory aligment)
来源:互联网 发布:淘宝胖人服饰专卖店 编辑:程序博客网 时间:2024/06/05 03:51
各成员变量存放的起始地址相对于结构的起始地址的偏移量必须为该变量的类型所占用的字节数的倍数。各成员变量在存放的时候根据在结构中出现的顺序依次申请空间,同时按照上面的对齐方式调整位置,空缺的字节自动填充。同时为了确保结构的大小为结构的字节边界数(即该结构中占用最大空间的类型所占用的字节数)的倍数,所以在为最后一个成员变量申请空间后,还会根据需要自动填充空缺的字节。
空了很久,都没整理出一篇日志来。今天,终不忍继续这么空着了!本来是打算写点自己的东西,无奈我的理解不够深入系统,头脑中都是一些碎片。那就干脆收录几篇文章的链接,供进一步学习吧!
(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不存在,则表示取消自定义字节对齐方式。
- 内存对齐(memory aligment)
- 内存对齐(Memory Alignment)
- VC内存对齐准则(Memory alignment)
- VC内存对齐准则(Memory alignment)
- [c&cpp][memory] 内存对齐分配策略(含位域模式)
- [c&cpp][memory] 内存对齐分配策略(含位域模式)
- 不可不知的内存对齐(Memory Alignment)
- GNU C - 关于8086的内存访问机制以及内存对齐(memory alignment)
- 8086架构的CPU的内存访问机制以及内存对齐(memory alignment)
- 关键字 对齐 内存对齐
- 内存对齐
- 内存对齐
- 内存对齐
- 内存对齐
- 内存对齐
- 内存对齐
- 内存对齐
- 内存对齐
- Java反射(三)在运行时利用反射分析对象
- 黑马程序员--c语言函数
- hashlib
- Yii2 使用十八 使用redis
- 痴迷Linux(二)—实训后对Linux再理解
- 内存对齐(memory aligment)
- IOS--C 语言 Lesson 函数的返回值
- TP-LINK交换机登录Web页面的操作方法
- TCP/IP传输层,你懂多少?
- nginx -s reload命令
- TypeError: decoding Unicode is not supported
- Linux学习笔记
- C Bit Fields
- oracle游标介绍