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只有一个成员真正存储于该地址。

最新文章

  1. git 切换远程分支
  2. HttpContext的dynamic包装器DynamicHttpContext (附原代码)
  3. 单链表List的C实现
  4. php获取文件后缀名格式
  5. VI编辑器
  6. 团体程序设计天梯赛-练习集L2-006. 树的遍历
  7. android131 360 01 闪屏页和主页面
  8. poj 2484 A Funny Game(博弈)
  9. js模态窗口
  10. Java程序猿的JavaScript学习笔记(3——this/call/apply)
  11. Jenkins插件开发
  12. Linux - 简明Shell编程07 - 数组(Array)
  13. Groovy Script in SoapUI REST Testing
  14. saiku运行时报错max_length_for_sort_data 需要set higher
  15. NLP入门(一)词袋模型及句子相似度
  16. JS数组的需要注意的问题
  17. Python中可视化图表处理echarts库的安装
  18. Docker容器学习与分享03
  19. Spring Boot开发之流水无情(二)
  20. 在MFC内竟然不可以解析“Mat”

热门文章

  1. 拓展Unity3D编辑器
  2. zookeeper脑裂
  3. opencv: 线性拟合
  4. Session兑现的一级缓存
  5. python 购物车小程序
  6. nGrinder Loadrunner vs nGrinder
  7. Sidetiq 定时任务
  8. Ubuntu 下使用 putty并通过 ch340 usb 串口线进行调试
  9. js中数值类型相加变成拼接字符串的问题
  10. C#数据结构学习