struct字節對齊原則

 原則1:windows下,k字節基本類型以k字節倍數偏移量對齊,自定義結構體則以結構體中最高p字節基本類型的p字節倍數偏移量對齊,Linux下則以2或4字節對齊;ios

 原則2:總體對齊原則,例如數組結構體,首元素字節對齊,而次元素字節未對齊,則數組元素不是字節對齊,需對尾部基本數據以結構體中最高p字節基本類型補充對齊windows

 做用:1節省寄存器用於保存偏移量的數量,2合理利用空間數組

 測試代碼:測試

 

 1 #include <iostream>
 2 
 3 
 4 typedef struct a
 5 {
 6     char a;
 7 }A;
 8 
 9 typedef struct b
10 {
11     char a;
12     short b;
13 }B;
14 
15 typedef struct c
16 {
17     short b;
18     char a;
19 }C;
20 
21 
22 typedef struct D
23 {
24     short b;
25     char a;
26     double c;
27     char e;
28 }D;
29 
30 
31 
32 
33 using namespace std;
34 int main()
35 {
36 
37 
38     std::cout<< sizeof(A)<<std::endl;
39     std::cout<< sizeof(B)<<std::endl;
40     std::cout<< sizeof(C)<<std::endl;
41     std::cout<< sizeof(D)<<std::endl;
42 
43     return 0;
44 }

相關文章
相關標籤/搜索