為什麼要位元組對齊

2021-10-04 01:46:16 字數 677 閱讀 8346

結構體中資料成員對齊規則:

結構體(struct)或聯合(union) 的資料成員,第乙個資料成員放在offset為0的地方,以後每個資料成員儲存的起始位置要從該成員的大小或該成員的子成員大小(只要該成員有子成員)的整數倍開始 .

結構體作為成員:如果乙個結構體裡有某些結構體成員,則結構體成員要從內部最大元素大小的整數倍位址開始儲存

收尾工作:結構體的總大小,也就是sizeof的結果,必須是內部最大成員的整數倍,不足要補齊。

下面

輸出結果: 24

當乙個字從偶數字址開始儲存時, 則稱為字的儲存是對準的; 否則, 當乙個字是從奇位址開始儲存, 則稱為字的儲存是為對準的.這一點與cpu訪問乙個字的匯流排週期(通過匯流排訪問一次儲存器或i/o埠的時間)有密切關係, 從理論上說, 由於8086cpu具有16條資料匯流排, cpu的乙個匯流排週期可以訪問乙個字, 但實際上, 只有當字的儲存是對準時, cpu訪問乙個字需要乙個匯流排週期, 當字的儲存是未對準的, cpu訪問這個字需要兩個匯流排週期(第乙個匯流排週期先訪問低位元組, 第二個匯流排週期訪問高位元組, 當然這個過程是cpu自動完成的, 對使用者來說, 字的儲存方式與程式設計沒有任何關係).

為什麼要位元組對齊

2.硬體原因 經過記憶體對齊之後,cpu的記憶體訪問速度大大提公升 因為任意資料或者結構體都是從偏移量為0的地方開始儲存的,經過位元組對齊後,他們的大小都是2的整數倍,正好符合cpu按塊讀取資料的規則,這樣的話,cpu每次都是讀取乙個或者若干個塊,不需要再刪除裡面不需要的資料了,從而提高了讀的速度 ...

什麼是位元組對齊,為什麼要位元組對齊。

一 什麼是位元組對齊,為什麼要對齊?現代計算機中記憶體空間都是按照byte劃分的,從理論上講似乎對任何型別的變數的訪問可以從任何位址開始,但實際情況是在訪問特定型別變數的時候經常在特定的記憶體位址訪問,這就需要各種型別資料按照一定的規則在空間上排列,而不是順序的乙個接乙個的排放,這就是對齊。對齊的作...

什麼是位元組對齊,為什麼要對齊

什麼是位元組對齊,為什麼要對齊?現代計算機中記憶體空間都是按照byte劃分的,從理論上講似乎對任何型別的變數的訪問可以從任何位址開始,但實際情況是在訪問特定型別變數的時候經常在特定的記憶體位址訪問,這就需要各種型別資料按照一定的規則在空間上排列,而不是順序的乙個接乙個的排放,這就是對齊。對齊的作用和...