struct/class/union内存对齐原则有四个:1).数据成员对齐规则:结构(struct)(或联合(union))的数据成员,第一个数据成员放在offset为0的地方,以后每个数据成员存储的起始位置要从该成员大小或者成员的子成员大小(...
struct/class/union内存对齐原则有四个:
1).数据成员对齐规则:结构(struct)(或联合(union))的数据成员,第一个数据成员放在offset为0的地方,以后每个数据成员存储的起始位置要从该成员大小或者成员的子成员大小(只要该成员有子成员,比如说是数组,结构体等)的整数倍开始(比如int在32位机为4字节, 则要从4的整数倍地址开始存储),基本类型不包括struct/class/uinon。
2).结构体作为成员:如果一个结构里有某些结构体成员,则结构体成员要从其内部"最宽基本类型成员"的整数倍地址开始存储.(struct a里存有struct b,b里有char,int ,double等元素,那b应该从8的整数倍开始存储.)。
3).收尾工作:结构体的总大小,也就是sizeof的结果,.必须是其内部最大成员的"最宽基本类型成员"的整数倍.不足的要补齐.(基本类型不包括struct/class/uinon)。
4).sizeof(union),以结构里面size最大元素为union的size,因为在某一时刻,union只有一个成员真正存储于该地址。
本文标题为:C/C++ 内存对齐原则及作用
基础教程推荐
- VisualStudio2010安装教程 2023-01-05
- C语言的三种条件判断语句你都了解吗 2023-03-05
- C语言数组长度的计算方法实例总结(sizeof与strlen) 2023-04-26
- character-encoding – Linux中最常见的C语言编码(和Unix?) 2023-11-21
- 利用QT设计秒表功能 2023-05-30
- Qt数据库应用之实现通用数据库请求 2023-03-18
- 05-C语言进阶——动态内存管理 2023-11-20
- C语言植物大战数据结构二叉树递归 2023-04-09
- g++: const 丢弃限定符 2022-10-07
- 纯C++代码详解二叉树相关操作 2023-05-15
