結構體內存對齊
偏移量
指的是結構體中某個成員相對于結構體起始地址的字節距離
第一個成員的起始位置為0,一個字節表示一個單位
這里的數字表示的是該成員地址與結構體首地址之間的值
對齊規則
1.結構體第一個成員的第一個字節的偏移量為0
2.其余成員變量要對?到某個數字(對?數)的整數倍的地址處
對齊數:編譯器有一個默認的對齊數,這個數與成員變量的的大小進行對比,小的一方為該成員變量的對齊數
其余成員的變量要存儲在對齊數的整數倍
例:第一個為char類型大小為1,第二個為int 大小為4個字節,第二個成員的對齊數是4(4比8小),因此存放的位置是4的倍數,因為第一個成員的大小為1,沒有超過4,所以存放的位置為偏移量4
3.結構體的總體的大小,必須是最大對齊數的整數倍
以上述的例子為例
在設置第三個成員變量,char,大小為1字節,根據第二個規則,偏移量為8,因為最大的對齊數是4,而三個成員變量所使用的字節長度為9(以0開始計算),所以4的倍數8,就不能使用,只能使用12,因此該結構體的總體大小為12字節
4.當嵌套了結構體時結構體的總體大小是所以結構體的最大對齊數的倍數