都是內存對齊,稍有區別,這里測試平臺是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