c 位域所占内存空间大小
结构体Text内元素所占内存不应该是四位码?为啥sizeof(text) = 4;单位变成了字节?#include<stdio.h>
int main(void)
{
struct Text
{
unsigned int a:1;
unsigned int b:1;
unsigned int c:2;
};
struct Text text;
text.a = 1;
text.b = 0;
text.c = 2;
printf("sizeof text = %d",sizeof(text));
return 0;
}
https://fishc.com.cn/forum.php?mod=viewthread&tid=83418&extra=page%3D2%26filter%3Dtypeid%26typeid%3D571
我觉得这个解释蛮好的:不够一个类型的size时,将按其中最大的那个类型对齐。
参考地址:
https://www.cnblogs.com/balingybj/p/4780358.html
? 内存中一般除char外,其余类型例如整形,浮点,都需要内存对齐。
char a;int b;需要a内存分配之后填充三个字节向后对齐,原因应该是内存地址顺序分配,前面都已经尽量保证内存分配对齐(结构体等最大类型尾填充),另外这也应该是内存顺序分配的一个佐证吧。
页:
[1]