都是内存对齐,稍有区别,这里测试平台是VS2008,其它平台为测试#pragma pack( n ),结构体中的数据成员,除了第一个是始终放在最开始的地方,其它数据成员的地址必须是它本身大小或对齐参数两者中较小的一个的倍数 即:min(n, sizeof(elem)) 结构体整个的大小就没有另外的要求
结果:在结构体中含有结构体的话,内结构体的大小按照此结构体内最大元素的大小来计算,各个元素的计算方法如下:min(n, e ||max({e}) )
成员的地址决定于前者及后者,其要么是前者的倍数,要么是后者的倍数,要么是成员的大小的倍数,取最小。
结构体最后的大小于前者有关,其要么是前者的倍数,要么是结构体中最大偏移量的倍数,取最大。
要算出最后结果,必须知道两者的值或缺省值
Copyright @ IT菜鸟 Powered by: .Text and ASP.NET Theme by: .NET Monster