结构体所占存储空间

原则一:结构体中元素是按照定义顺序一个一个放到内存中去的,但并不是紧密排列的。从结构体存储的首地址开始,每一个元素放置到内存中时,它都会认为内存是以它自己的大小来划分的,因此元素放置的位置一定会在自己宽度的整数倍上开始(以结构体变量首地址为0计算)。

原则二:在经过第一原则分析后,检查计算出的存储单元是否为所有元素中最宽的元素的长度的整数倍,是,则结束;若不是,则补齐为它的整数倍。最后的元素也要按照最大元素字节数补齐。

原则三:如果是含有结构体的结构体,则是结构体里结构体成员的方式对齐,不是按照结构体大小对齐。

补:在GCC中,要求是最大变量大小的整数倍,但是不超过4字节的倍数,但是VC中,是按照实际大小倍数。

posted @ 2014-05-18 15:43  Let it be!  阅读(1222)  评论(0编辑  收藏  举报