C struct的内存对齐

Posted LarryZeal

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C struct的内存对齐相关的知识,希望对你有一定的参考价值。

说明:如果你看到了这篇,请略过

 

struct是复合类型。

其中的成员在内存中的分布都是对齐的。

这个对齐的意思是,struct的sizeof运算结果必定是其最大类型长度的整数倍。

--注意,如果struct内部还有struct的话,应该将内部struct的成员拆开来看。而不应将内部struct看成一个整体成员(该角度仅限于size上)。

 

由于对齐的原则,成员的顺序会涉及到整体的内存占用。

 

 

极其特别的,C支持对struct中的成员指定占用的bit数(注意,是bit,不是byte)--不能超出类型最大bit数。

这种操作在嵌入式开发中非常有用,因为可以充分利用内存。

以上是关于C struct的内存对齐的主要内容,如果未能解决你的问题,请参考以下文章

转C/C++ struct/class/union内存对齐

C语言精要总结-内存地址对齐与struct大小判断篇

C语言精要总结-内存地址对齐与struct大小判断篇

C/C++中struct中内存对齐规则

结构体进阶知识 struct内存对齐(笔试面试常考)

浅析内存对齐与ANSI C中struct型数据的内存布局