Belirli bir sınıf boyutunu elde etmek için C++ bit alanlarını kullanmaya çalışıyorum C++ bit alanları kullanarak niteliklerini, ama nedense beklediğimden daha büyük.Misalligned sınıfının
Sorun, (sizeof
argüman olarak geçirilen) 32 bit (4 bayt) olan bir sınıf 5 bayt bildiriyor. Örnek sınıfı körük: four_bit_field
ve eight_bit_field
konumları değiştirilir ise
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));
, uygun boyutu, 4 bayt geri sizeof
. Muhtemelen bir hafıza düzenleme sorunu olduğuna inanıyorum.
Yani birinin bu davranışın arkasında yatan sebebi bilir? Ve en önemlisi, herhangi bir pozisyon değiştirmeden bunu nasıl düzeltebilirim.
. Ama bu konuya bir çözüm arıyorum. – braunmagrin
@braunmagrin, ben çözümü test meşguldü, benim düzenlemeyi görüyoruz. –
Acele ettiğim için üzgünüm. Teşekkürler, bu çözüldü. – braunmagrin