bool类型变量如何存储在内存中?(C++)

Fih*_*hop 7 c++ boolean

布尔试验;

sizeof(test) = 1 如果使用VS 2010.由于每个C++数据类型必须是可寻址的,因此"test"bool变量是8位(1字节).

我的问题是"test"变量真的占用内存中的1个字节吗?

是否有任何实现技能可以使bool数据类型只占用一位?如果是的话,你能举个例子吗?

bool test1[32](在VS 2010中), int test2(在VS 2010中)

test1test2占用相同的记忆?

Ale*_* C. 9

每个元素都test1必须是可寻址的.这意味着test1需要至少32 个字节(而不是位).

如果您希望将多个布尔值存储在单个变量中,请使用std::bitsetstd::vector<bool>(但请注意,后者实际上并不是bool 的向量,它是专为节省空间而设计的).

IIRC,C++ 11也定义了std::dynamic_bitset.

  • 你可能意味着32位,而不是字节 (4认同)
  • 如果处理器具有8位可寻址单元,则意味着`bool`必须占用1个octect(字节),而不是4个(32位).是的,那里仍然有8位可寻址系统.ARM9可以访问8位或32位值. (2认同)
  • @ entity64:`test1`是一个由32个可寻址的`bool`对象组成的数组,它们需要(至少)32个字节,每个对象一个. (2认同)