c语言 64位默认多少字节对齐_你应该知道的C语言内存节省之法

58e6ac6f509bba5737577fbf18a76567.png

不论身在互联网大厂与否,很多C语言开发者们在项目中都会遇到一种情况:很多结构体中都会用到位变量作为一个开关标识。例如下面这个例子,

typedef struct connection_s {  int                  sockfd;  chain_t             *recv_chain_head;  chain_t             *recv_chain_tail;  chain_t             *send_chain_head;  chain_t             *send_chain_tail;  struct connection_s *next;  unsigned int         closed:1;} connection_t;

假设我们是在一台32位Linux操作系统中编译连接运行的。那么这个结构体占了多大空间呢?

这个问题涉及到两方面知识点:

  1. 位变量
  2. 结构体对齐规则

位变量:就是closed的写法,即在变量名后跟:n,n位占用的位数。换言之,虽然closed声明位unsigned int(32位),但它只用到了1位,额外31位和它无关,对它的操作也影响不到额外31位。

结构体对齐:相信很

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值