位元組對齊系列1

2021-09-27 11:28:32 字數 557 閱讀 4009

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

現代計算機中記憶體空間都是按照byte劃分的,

從理論上講似乎對任何型別的變數的訪問可以從任何位址開始,

但實際情況是在訪問特定型別變數的時候經常在特定的記憶體位址訪問,

這就需要各種型別資料按照一定的規則在空間上排列,而不是順序的乙個接乙個的排放,這就是對齊。

對齊的作用和原因:

各個硬體平台對儲存空間的處理上有很大的不同。

一些平台對某些特定型別的資料只能從某些特定位址開始訪問。

比如有些架構的cpu在訪問 乙個沒有進行對齊的變數的時候會發生錯誤,那麼在這種架構下程式設計必須保證位元組對齊.

其他平台可能沒有這種情況,但是最常見的是如果不按照適合其平台要求對資料存放進行對齊,會在訪問效率上帶來損失。

比如有些平台每次讀都是從偶位址開始

,如果乙個int型(假設為32位系統)如果存放在偶位址開始的地方,那 麼乙個讀週期就可以讀出這32bit,

而如果存放在奇位址開始的地方,就需要2個讀週期,並對兩次讀出的結果的高低位元組進行拼湊才能得到該32bit數 據。

顯然在讀取效率上下降很多

位元組對齊1

一 快速理解 1 什麼是位元組對齊?在c語言中,結構是一種復合資料型別,其構成元素既可以是基本資料型別 如int long float等 的變數,也可以是一些復合資料型別 如陣列 結構 聯合等 的資料單元。在結構中,編譯器為結構中的每個成員按其自然邊界 alignment 分配空間。各個成員按照它們...

位元組順序 位元組對齊

一.位元組順序的產生 在計算機中,資料是以位元組為單位存放的,而c語言中只有char才是乙個位元組,其他如int,float都是大於乙個位元組,所以就存在將資料按怎樣的順序存放的問題。一般有大端序和小端序兩種方式,特殊的還有混合序,也就是兩種存放方式同時存在於乙個計算機系統中。上面講的都是主機位元組...

位元組順序 位元組對齊

一.位元組順序的產生 在計算機中,資料是以位元組為單位存放的,而c語言中只有char才是乙個位元組,其他如int,float都是大於乙個位元組,所以就存在將資料按怎樣的順序存放的問題。一般有大端序和小端序兩種方式,特殊的還有混合序,也就是兩種存放方式同時存在於乙個計算機系統中。上面講的都是主機位元組...