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

2021-10-07 07:04:12 字數 492 閱讀 4680

一、什麼是位元組對齊,為什麼要對齊?

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

對齊的作用和原因:各個硬體平台對儲存空間的處理上有很大的不同。一些平台對某些特定型別的資料只能從某些特定位址開始訪問。比如有些架構的cpu在訪問乙個沒有進行對齊的變數的時候會發生錯誤,那麼在這種架構下程式設計必須保證位元組對齊.其他平台可能沒有這種情況,但是最常見的是如果不按照適合其平台要求對資料存放進行對齊,會在訪問效率上帶來損失。比如有些平台每次讀都是從偶位址開始,如果乙個int型(假設為32位系統)如果存放在偶位址開始的地方,那麼乙個讀週期就可以讀出這32bit,而如果存放在奇位址開始的地方,就需要2個讀週期,並對兩次讀出的結果的高低位元組進行拼湊才能得到該32bit資料。顯然在讀取效率上下降很多。

為什麼要位元組對齊

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

為什麼要位元組對齊

結構體中資料成員對齊規則 結構體 struct 或聯合 union 的資料成員,第乙個資料成員放在offset為0的地方,以後每個資料成員儲存的起始位置要從該成員的大小或該成員的子成員大小 只要該成員有子成員 的整數倍開始 結構體作為成員 如果乙個結構體裡有某些結構體成員,則結構體成員要從內部最大元...

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

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