1. 程式人生 > 其它 >Spring 原始碼(8)Spring BeanPostProcessor的註冊、國際化及事件釋出機制

Spring 原始碼(8)Spring BeanPostProcessor的註冊、國際化及事件釋出機制

1.對於結構體的各個成員,第一個成員位於偏移為0的位置,結構體第一個成員的偏移量(offset)為0,以後每個成員相對於結構體首地址的offset都是該成員大小與有效對齊值中較小那個的整數倍,如有需要編譯器會在成員之間加上填充位元組。

2.除了結構成員需要對齊,結構本身也需要對齊,結構的長度必須是編譯器預設的對齊長度和成員中最長型別中最小的資料大小的倍數對齊。

//32位系統,最小對齊數為4
#include<stdio.h>
struct
{
    int i;  //佔用0-3
    char c1;  //佔用4
    char c2;  //佔用5(因為CHAR的位元組為1小於最小位元組數,偏移量為1的倍數即可)6,7為補位元組
}x1;

struct{ char c1; //佔用0 int i; //1,2,3為補位元組,4-7為i所佔用位元組,因為i的大小為4位元組,所以偏移量必須是4的倍數,補齊位元組。 char c2; //佔用8 9,10,11為補位元組,struct的大小必須為最大變數和對齊數的最小值的倍數,即為4的倍數 }x2; struct{ char c1; char c2; int i; }x3; int main() { printf("%d\n",sizeof(x1)); // 輸出8 printf("%d\n",sizeof
(x2)); // 輸出12 printf("%d\n",sizeof(x3)); // 輸出8 return 0; }


參考連結:https://blog.csdn.net/qq_39397165/article/details/119745975