【发布时间】:2011-11-01 14:24:26
【问题描述】:
布尔测试;
sizeof(test) = 1 如果使用 VS 2010。由于每个 C++ 数据类型都必须是可寻址的,
"test" bool 变量是 8 位(1 字节)。
我的问题是,“test”变量真的占用内存中的 1 个字节吗?
有没有什么实现技巧可以让bool数据类型只占 一点?如果可以,可以举个例子吗?
bool test1[32](在 VS 2010 中),
int test2(在 VS 2010 中)
test1 和 test2 占用相同的内存吗?
【问题讨论】:
-
让我强调一下,当对速度进行超优化时,平台在 32 位机器上以 4 个字节存储布尔值可能是合理的。然后,如果您在一个结构中有 4 个布尔值,您只需要一个 ALU 操作来检查一个布尔值是否为真,而当一个机器字中包含许多布尔值时需要两个。 (Ofc 这么小的差异通常根本不重要。)
-
有些嵌入式处理器实际上有位可寻址内存,所以bool变量可以占用一位。