我想在C++中使用位字段來實現特定的類大小,但由於某種原因,它比我預期的要大。在C++類中使用位字段的不一致的屬性
問題是,具有32位(4字節)的類正在報告(當作爲參數傳遞給sizeof
時)5個字節。實施例類波紋管:
typedef unsigned char u8;
typedef unsigned int u32;
class Test {
u8 four_bit_field : 4;
u8 eight_bit_field;
u32 twenty_bit_field : 20;
}__attribute__((packed));
如果four_bit_field
和eight_bit_field
位置被切換,sizeof
返回正確的大小,4個字節。我相信這可能是內存分配問題。
那麼,有人知道背後的原因?而且,最重要的是,我怎樣才能解決這個問題,而無需轉換任何職位。
這就是我想,當我說這是一個內存allignment問題。但我正在尋找解決這個問題的方法。 – braunmagrin 2013-02-28 07:14:31
@braunmagrin,我正在測試解決方案,請參閱我的編輯。 – 2013-02-28 07:16:46
我很抱歉匆忙。謝謝,解決了。 – braunmagrin 2013-02-28 07:41:03