字节对齐

总原则:结构体变量占据的内存单元的个数应当大于等于其内部所有数据成员占据内存单元数的和。

出于效率的考虑,C预言引入了字节对齐机制,一般来说,不同的编译器字节对齐机制有所不同,但还是有以下3条通用原则:

1、结构体变量的大小能够被其最宽基本类型成员的大小所整除

2、结构体每个成员相对于结构体首地址的偏移量都是成员大小的整数倍,如有需要编译器会在成员之间加上填充字节

3、结构体的总大小为结构体最宽基本类型成员大小的整数倍,如有需要编译器会在最末一个成员之后加上填充字节(数组、结构体和共用体都不是基本类型)

推荐阅读更多精彩内容

  • 4.3:新增class的相关内容 今天看到一个题目: 最开始简单的理解为,每个数据的size之和就是偏移量。因为偏...
    AwesomeAshe阅读 282评论 0赞 0
  • @[c++|struct] 今天在编程中碰到一个坑,搞的调试了半天,最后发现程序中在写数据和读取数据时结构体定义不...
    drybeans阅读 1,878评论 0赞 10
  • 什么叫做字节对齐? 对齐跟数据在内存中的位置有关。如果一个变量的内存地址正好位于它长度的整数倍,他就被称做自然对齐...
    _我和你一样阅读 79评论 0赞 0
  • 通过一段代码来描述内存对齐的现象。 上述代码打印出来的结果为:24,16 为什么相同的结构体,只是交换了变量 ab...
    豆瓣菜阅读 3,212评论 4赞 15
  • (字节对齐的实现细节和编译器有关) 1. 基本概念 字节对齐:计算机存储系统中以Byte为单位存储数据,不同数据类...
    安然_fc00阅读 496评论 0赞 0