c++ - 8 个 bool 值与 1 个整数

标签 c++ sizeof

bool 在 C++ 中占用 1 个字节。但是,为什么 bool[8] 占用 8 个字节而不是 1 个字节? 一个字节有足够的空间容纳 8 位。

我使用 -Os 标志用 GCC 编译了这个:

#include <iostream>

using namespace std;

class Foo
{
    public:
        bool m_bool[8];
};

int main ()
{
    cout << "Size: " << sizeof(Foo) << " byte(s) " << endl;

   return 0;
}

它返回“大小:8 字节”。

有什么办法可以优化吗?

最佳答案

编译器必须允许您获取各个 bool 值的地址,例如

Foo foo;
bool* p = &foo.m_bool[0];
bool* q = &foo.m_bool[1];

如果 bool 值被打包,p 和 q 会是什么?

关于c++ - 8 个 bool 值与 1 个整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12208067/

相关文章:

c++ - Sizeof() 函数不适用于常量数组 C++

c++ - 为什么在 C++ 中使用 = 来初始化原始类型?

C++ 内存泄漏检测发生在错误的时间? (C 数组)

c - 在字符指针数组的情况下, 'array name' 是什么意思?

c - 获取指针数据的大小

c - 如何在任何平台上识别字节的大小?

c - 当我在 C 语言的结构中声明一个数组时会发生什么?

c++ - 在类数组引用的类的单个实例中调用成员函数

c++ - 从未命名的 QGraphicsTextItem 中获取文本

c++ - 阅读后对文本文件进行排序?