我需要處理以下形式的一些數據:ç位域內存使用率
typedef struct{
unsigned n1 : 12;
unsigned n2 : 12;
unsigned n3 : 12;
unsigned n4 : 1;
unsigned n5 : 35;
} data;
我確信,在他們總共數到9個字節。
但它們不會。將該結構的9個字節寫入文件並將其讀回並不會恢復所有數據,並且sizeof(data)
將返回16.
這裏有什麼問題?
填充。不能保證編譯器如何分配這些位和/或在結構之後插入多少填充。編譯器喜歡在均勻的邊界上結束數據結構。什麼構成了一個平坦的邊界是由幾個因素決定的,其中最重要的是處理器架構。 – Lou 2011-05-26 17:42:27