内存对齐规则

  隔了很久,搞忘了对齐的规则,现在重新复习了下,记下来谨防以后又忘记。

  1、可以根据 #pragma pack() 设置对齐系数,且叫为n

  2、结构体中,对比每个成员变量自身的大小和n的大小。 取小的个为标准,把这个小的叫a吧,称为按a对齐

  3、每个变变量的起始地址需要为a的整数倍,不是整数倍的则补齐。

  4、最后这个结构体也要对齐,它占的大小是最大的一个变量 类型的 大小的整数倍,不是的补齐。加起来则是所占大小。

  5、uion中是算不对齐时,占最大内存的一个变量为内存总值(因为会有数组类型)为最大值, 但也需要对齐,占的总大小是最大的一个变量 类型的 大小的整数倍。所以不满足整数倍的补齐。

  http://leopard168.blog.163.com/blog/static/16847184420137910543475/ 这里有很多相关例子

  

原文地址:https://www.cnblogs.com/wangrui-techbolg/p/3454231.html