龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > C/C++开发 >

C++中优化BOOL 变量的声明

时间:2009-12-22 15:42来源:未知 作者:admin 点击:
分享到:
通常我们会这样声明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个

  通常我们会这样声明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资源。 使用的时候需要综合考虑内存和速度之间关系。

精彩图集

赞助商链接