都是內存對齊,稍有區(qū)別,這里測試平臺是VS2008,其它平臺為測試
#pragma pack( n ),
結構體中的數(shù)據成員,除了第一個是始終放在最開始的地方,其它數(shù)據成員的地址必須是它本身大小或對齊參數(shù)兩者中較小的一個的倍數(shù)
即:min(n, sizeof(elem))
結構體整個的大小就沒有另外的要求



















結果:
在結構體中含有結構體的話,內結構體的大小按照此結構體內最大元素的大小來計算,各個元素的計算方法如下:
min(n, e ||max({e}) )



















因為TestA最大的元素是short 2B,所以計算TestA的大小的時候,按照2來算

當__declspec( align(#) )和#pragma pack( n )同時修飾結構體的時候,前者的優(yōu)先級高,
注意前者與后者的區(qū)別:
成員的地址決定于前者及后者,其要么是前者的倍數(shù),要么是后者的倍數(shù),要么是成員的大小的倍數(shù),取最小。
結構體最后的大小于前者有關,其要么是前者的倍數(shù),要么是結構體中最大偏移量的倍數(shù),取最大。
要算出最后結果,必須知道兩者的值或缺省值



















輸出:
