如果我申报这样的东西
struct S{
unsigned int bit:4;
}它是怎么工作的?
我对此很困惑,在任何地方都找不到这方面的任何信息。
发布于 2015-04-25 16:35:01
当你写
S s;您分配sizeof (S)字节,这在您的情况下似乎是2。
您只使用该空间的4位这一事实并不会改变大小。
发布于 2015-04-25 16:36:08
您不能分配4位。最低的内存分配单元是一个字节,8位。
但是没有理由使用unsigned int --这会浪费更多的内存,使用unsigned char。
发布于 2015-04-25 16:38:47
这将分配4字节的内存,并且只使用其中的4位。位字段需要占用它们声明为的类型的所有空间,即使没有全部使用。
如果您想更有效地使用内存,可以这样做:
struct S{
unsigned char bit : 4;
};它只分配一个字节。
另外,sizeof(无符号int)通常是4个字节,所以sizeof(S)至少是4个字节。
https://stackoverflow.com/questions/29867822
复制相似问题