博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[编程技巧] C++中优化BOOL 变量的声明
阅读量:5870 次
发布时间:2019-06-19

本文共 667 字,大约阅读时间需要 2 分钟。

通常我们会这样声明BOOL 变量:
class CMyClass {
...
BOOL m_bVar1;
BOOL m_bVar2;
BOOL m_bVar3;
BOOL m_bVar4;
BOOL m_bVar5;
BOOL m_bVar6;
BOOL m_bVar7;
BOOL m_bVar8;
...
};
考虑到BOOL 变量在Win32 下其实是一个int ,占4个字节,那么上面8个BOOL变量就会占去 32个字节。
typedef int BOOL; // BOOL takes 4 bytes
其实,我们可以改变BOOL变量的声明来使之只占一个bit:
class CMyClass {
...
BOOL m_bVar1:1;
BOOL m_bVar2:1;
BOOL m_bVar3:1;
BOOL m_bVar4:1;
BOOL m_bVar5:1;
BOOL m_bVar6:1;
BOOL m_bVar7:1;
BOOL m_bVar8:1;
...
};
上面的代码中,每个BOOL 变量只占了1个比特(bit), 那么上面8个BOOL变量就会占去 1个字节。 
内存节省了32倍!!!
不过从另外一方面, CPU 在处理这些bit类型的BOOL变量的时候, 需要做位运算来把其中的值取出来, 所以会额外消耗CPU资源。 使用的时候需要综合考虑内存和速度之间关系。
 
 本文转自 陈本峰 51CTO博客,原文链接:http://blog.51cto.com/wingeek/273993,如需转载请自行联系原作者
你可能感兴趣的文章
七天学会ASP.NET MVC (四)——用户授权认证问题
查看>>
upgrade to iOS7,how to remove stroyboard?
查看>>
影响企业信息化成败的几点因素
查看>>
Thinkphp5 模型里别名alias不生效bug【已解决】
查看>>
SCCM 2016 配置管理系列(Part8)
查看>>
zabbix监控部署
查看>>
关于Tomcat下项目中文名在Windows和Linux下编码混乱问题解决
查看>>
struts中的xwork源码下载地址
查看>>
Android硬件抽象层(HAL)深入剖析(二)
查看>>
记录一些有用的代码技巧,不定期更新
查看>>
Centos 安装后不能上网 解决备忘
查看>>
cisco 交换机链路聚合
查看>>
[AX]AX2012 Form开发概览
查看>>
用几何画板画垂线的方法
查看>>
《构建之法》之第四章读后感
查看>>
C++对象模型
查看>>
第九章 Python之面向对象
查看>>
protoful进行序列化
查看>>
HTMLCSS学习笔记(五)----定位详解、层级、滤镜遮罩
查看>>
SyntaxError: expected expression, got ")" void() : 1: 5
查看>>