關於記憶體對齊
阿新 • • 發佈:2018-11-14
記憶體對齊可以用一句話來概括:“資料項只能儲存在地址是資料項大小的整數倍的記憶體位置上”
例如int型別佔用4個位元組,地址只能在0,4,8等位置上。
位元組對齊的緣故,如下的結構體的佔用記憶體是一樣
struct A{
char a; // 1byte 實際佔用 4 byte
int b; //4byte 實際佔用 4 byte
char c; // 1byte 實際佔用 4 byte
long long d; // 8byte 實際佔用 8 byte
};
sizeof(A) = 16
struct B{
char a; // 1byte 實際佔用 1 byte
char c; // 1byte 實際佔用 1 byte
char e:4; // 4bit
char f:2; // 2byit
char g:2; // 2bit e f g 合起來實際佔用 1 byte
int b; //4byte 實際佔用 4 byte
long long d; // 8byte 實際佔用 8 byte
};
sizeof(B) = 16