首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 计算机考试 > 等级考试 > 复习指导 >

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

2009-03-20 
二级C++

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

 

3COME考试频道为您精心整理,希望对您有所帮助,更多信息在http://www.reader8.com/exam/

热点排行