结构体类型占用的内存空间的计算方法:
首先需要确定是在32位系统,还算在64位系统
32系统4字节对齐时,如下分析:
每行4个字节,字符数据按照一个一个的存储;short型数据按照2个字节2个字节的存储;int和folat,以及long,double按照4个字节4个字节存储
64位系统4字节对齐时,和32位系统一样。
64位系统8字节对齐是,如下分析:
每行8个字节,字符数据按照一个一个的存储;short型数据按照2个字节2个字节的存储;int和float,按照4个字节4个字节的存储,long和double型按照8个字节8个字节的存储
只有结构体中有2个以上的数据时,才考虑对齐问题,如果只有一个,这个类型长度是多少,结构体长度就是多少
**只有在有2个以上成员时才需要对齐,对齐时按照最长类型对齐,但是也需要考虑系统的位数,如果是32位系统,最多4字节对齐,如果64位系统,按照最长类型的字节数对齐
*结构体和共用体指针的长度在32位系统上是4,在64位系统上是8
*如果是32位,最多32位,4字节对齐,*如果是64位,最大对齐位数是结构体中最长的数据类型,不受64位系统长度的限制,比如可以按照long double 16位对齐