首先我們得明白,什麼是位元組對齊?
在訪問特定型別變數的時候經常在特定的記憶體位址訪問,這就需要各種型別資料按照一定的規則在空間上排列。
然後我們還得懂得,為什麼需要位元組對齊?
其實,位元組對齊是空間與時間的博弈,為了效率的考慮,不得不採取空間換時間的策略,利用空間佔位,造成了資料在位址上的對齊,這個時候就達到了訪問資料只需要一次讀入即可。
位元組對齊計算的四個概念
1、基本資料型別的自身對齊值:
char型別: 1位元組
short型別: 2位元組
int、float型別: 4位元組
double型別: 8位元組
2、程式的指定對齊值:
即#pragma pack(value)時的指定對齊值value
3、自定義型別的自身對齊值:
即結構體或類的成員自身對齊最大的值
4、自定義型別的有效對齊值:
自定義型別的自身對齊值和指定對齊中較小的值
掌握了這些就可以初步認識位元組對齊了。
mysql位元組對齊 C 位元組對齊彙總
一 什麼是位元組對齊 現代計算機中記憶體空間都是按照byte劃分的,從理論上講似乎對任何型別的變數的訪問可以從任何位址開始,但實際情況是在訪問特定型別變數的時候經常在特定的記憶體位址訪問,這就需要各種型別資料按照一定的規則在空間上排列,而不是順序的乙個接乙個的排放,這就是對齊。二 位元組對齊的原因和...
有關位元組對齊的介紹
什麼是對齊,以及為什麼要對齊 現代計算機中記憶體空間都是按照byte劃分的,從理論上講似乎對任何型別的變數的訪問可以從任何位址開始,但實際情況是在訪問特定變數的時候經常在特定的記憶體位址訪問,這就需要各型別資料按照一定的規則在空間上排列,而不是順序的乙個接乙個的排放,這就是對齊。對齊的作用和原因 各...
有關結構體位元組對齊方式
今天偶然碰到對如下兩個結構體進行sizeof 運算 struct example1 struct example2 在計算機上執行後得到分別為24,16,網上查了一下,得到如下理解 1.計算方式 sizeof struct offsetof last item sizeof last item si...