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

标签 c++ boolean

boolean 测试;

sizeof(test) = 1 如果使用 VS 2010。由于每个 C++ 数据类型都必须是可寻址的, “测试” boolean 变量是 8 位(1 字节)。

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

有没有什么实现技巧可以让bool数据类型只占 一点?如果是,你能举个例子吗?

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

test1test2是否占用相同的内存?

最佳答案

test1 的每个元素必须是可寻址的。这意味着数组 test1 (使用 bool test1[32] 创建的)至少需要 32 个字节(每个元素 1 个字节)。

如果要将多个 boolean 值存储在单个变量中,请使用 std::bitsetstd::vector<bool> (但请注意,后者并不是真正的 boolean vector ,它是一种旨在节省空间的特化)。

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

关于c++ - bool类型的变量是如何存储在内存中的? (C++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7967924/

相关文章:

开源项目中的 C++ 类设计模式

c++ - 如何在 C++ 中对整数值进行位移

c++ - 警告 : format ‘%5f’ expects type ‘double’ , 但参数 3 的类型为 ‘int’

c++ - 虚函数与其覆盖的函数的返回类型不协变

java - 如何从字符串数组中删除前几项?

java-检查对象等于 == 但成功

java - 如何使用方法返回的 boolean 值?

python - FutureWarning : in the future, 类 boolean 数组将作为 boolean 数组索引处理

c++ - 如何部署 C++ 应用程序并为我的音乐播放器创建安装文件

c - 关于 _Bool 使用的 VS2013 编译问题