boolean 测试;
sizeof(test) = 1
如果使用 VS 2010。由于每个 C++ 数据类型都必须是可寻址的,
“测试” boolean 变量是 8 位(1 字节)。
我的问题是“test”变量真的占用内存中的 1 个字节吗?
有没有什么实现技巧可以让bool数据类型只占 一点?如果是,你能举个例子吗?
bool test1[32]
(在 VS 2010 中),
int test2
(在 VS 2010 中)
test1
和test2
是否占用相同的内存?
最佳答案
test1
的每个元素必须是可寻址的。这意味着数组 test1
(使用 bool test1[32]
创建的)至少需要 32 个字节(每个元素 1 个字节)。
如果要将多个 boolean 值存储在单个变量中,请使用 std::bitset
或 std::vector<bool>
(但请注意,后者并不是真正的 boolean vector ,它是一种旨在节省空间的特化)。
IIRC,C++11 还定义了 std::dynamic_bitset
.
关于c++ - bool类型的变量是如何存储在内存中的? (C++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7967924/