漫談位元組對齊

2021-10-12 03:04:25 字數 660 閱讀 9085

資料在記憶體位址是它長度的整數倍就叫位元組對齊。比如乙個整形在0x00000004(假設型別長度32)。不同的系統,資料型別的長度可能略有從差別。
型別/模型

ilp32

lp32

lp64

llp64

char88

88short

1616

1616

int32

3264

32long

3232

6432

long long

6464

6464

pointer

3232

6464

大部分的unix和linux系統 32位使用ilp32模型,64位使用lp64模型。

cpu從記憶體中讀取乙個資料,假設4位元組的整形位址再0x000000004上,一次就可以取出資料,如果4位元組的整形不對齊,在0x00000002上,那cpu需要兩次操作,一次取0x00000002-0x00000003的資料,一次取0x00000004-0x00000005的資料。這樣就會導致效率的降低。

理論上,cpu可以隨機從記憶體處理上取出任意位置的資料。但從圖中就可以看出cpu只能從特定的位置取值。想想這是為什麼呢?

未完待續。

位元組順序 位元組對齊

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

位元組順序 位元組對齊

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

位元組對齊 8位元組對齊

參考博文 參考1 參考2 參考3 在記憶體管理中經常使用位元組對齊來管理分配的記憶體。1 原理 2 演算法 2.1unsigned intcalc align unsigned int n,unsigned align 2.2 更好的演算法 unsigned intcalc align unsign...