C/C++ 内存对齐原则及作用
2024-09-20 23:35:22
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只有一个成员真正存储于该地址。
最新文章
- git 切换远程分支
- HttpContext的dynamic包装器DynamicHttpContext (附原代码)
- 单链表List的C实现
- php获取文件后缀名格式
- VI编辑器
- 团体程序设计天梯赛-练习集L2-006. 树的遍历
- android131 360 01 闪屏页和主页面
- poj 2484 A Funny Game(博弈)
- js模态窗口
- Java程序猿的JavaScript学习笔记(3——this/call/apply)
- Jenkins插件开发
- Linux - 简明Shell编程07 - 数组(Array)
- Groovy Script in SoapUI REST Testing
- saiku运行时报错max_length_for_sort_data 需要set higher
- NLP入门(一)词袋模型及句子相似度
- JS数组的需要注意的问题
- Python中可视化图表处理echarts库的安装
- Docker容器学习与分享03
- Spring Boot开发之流水无情(二)
- 在MFC内竟然不可以解析“Mat”