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/