我们知道结构体在内存中的存储是为了速度而舍弃浪费一些内存,那么为了减少内存的浪费,我们今天引入一个知识-----位段
struct A
{
int_a:3;
int_b:4;
int_c:2;
}
这就是一个位段的例子,我们看到成员都是一个冒号后面跟着数字,代表所占用的字节
struct A
{
int a:2;
int b:5;
int c:10;
int d:30;
}
我们来看这个位段类型,如果我们使用sizeof(A)我们会惊奇的发现,四个整形只占用了8个字节;我们来仔细了解一下
内存第一次为A分配地址,分配的是4个字节,我们看里面的内容a(占用3个bit),b(占用4个bit),c(占用10个),d(占用30个)。
第一次分配4个字节,32个bit位,a+b+c=17足够放到这4个字节当中,但是我们看d占用了30个,那么上一次分配的4字节内存只剩下15个bit不够放置,舍弃,再分配4个字节用来放置d。
相比之前的结构体,我们发现节省了一部分内存,当然你也可以通过位段来选择你想要放置的位数。(会多用于网络)