开发者社区> 问答> 正文

下面这个结构体的内存占用是什么样的,重点是union那里

struct st
{

char ch,*ptr;
    union  
{  
    short a , b;  
    unsigned int c : 2 , d : 1;  
};  
bool f;  
struct st *next;  

};

展开
收起
a123456678 2016-03-20 10:56:44 1727 0
1 条回答
写回答
取消 提交回答
  • union是共享类存的,unsigned int c : 2 , d : 1; 是位段的。位字段没有独立的地址,不能进行取址操作; 位字段没有独立的存储空间,不能进行sizeof()操作。
    位字段的内存分配规则:
    位字段按声明顺序在机器字内存储。
    位字段不能跨越机器字存储,上一个机器字空间不足时,该位字段将全部存到下一个机器字。

    那么union那里应该是2个字节。

    2019-07-17 19:09:06
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
内存取证与IaaS云平台恶意行 为的安全监控 立即下载
云服务器ECS内存增强型实例re6全新发布 立即下载
低代码开发师(初级)实战教程 立即下载