BOOST源码笔记(3) - 节省内存的小技巧

本文介绍了一种使用位字段来高效存储多个状态信息的方法,并通过重载运算符来进行状态比较,这种方法不仅节省内存还能保持代码的优雅。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

先不多说,来看段代码:

 

struct state_data
        {
            unsigned shared_count:11,
                shared_waiting:11,
                exclusive:1,
                upgrade:1,
                exclusive_waiting:7,
                exclusive_waiting_blocked:1;

            friend bool operator==(state_data const& lhs,state_data const& rhs)
            {
                return *reinterpret_cast<unsigned const*>(&lhs)==*reinterpret_cast<unsigned const*>(&rhs);
            }
        };

 

 

可以看出,在struct state_data中所有的成员也只占32个字节,:x 代表这个成员占x个字节,而在对比的时候即重载operator ==,只需要对比从struct poiter开始的32个字节即可,这个技巧即节省了内存空间,又很优雅。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值