每日一C排序之struct字节对齐方式
每天拾一个C语言贝壳,厚积薄发,积跬步以致千里。
今日贝壳:结构体struct是多个相互关联数据的集合,这些数据以整体形式存储在内存。
那么结构体A是否占1+4+2=7个字节的内存大小呢,7个似乎很合理,但事实上,为了兼容各种不同的硬件,结构体内存分配采用特定字节对齐方式。
1.数据类型对齐值:即为sizeof的值。
2.结构体对齐值:结构体中对齐值最大类型的对齐值。
3.结构体总大小为 其对齐值得增数倍,需要时编译器会自动添加空字节。
4.结构体元素按顺序分配内存。
按照上述规则:
a在第0个字节开始,占一个字节;b则在第4个字节开始,占4个字节;c在第8个字节开始,占2个字节。为使结构体总大小为其对齐值得倍数,添加两个空字节,结构体总大小为12.
【每日一C之三】struct字节对齐方式,布布扣,bubuko.com
【每日一C之三】struct字节对齐方式
原文:http://blog.csdn.net/lovecodeless/article/details/22416665