A 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;
}
Run Code Online (Sandbox Code Playgroud)
它返回"Size:8 byte(s)".
有没有办法优化它?
编译器必须允许你获取各个bool的地址,例如
Foo foo;
bool* p = &foo.m_bool[0];
bool* q = &foo.m_bool[1];
Run Code Online (Sandbox Code Playgroud)
如果bool被包装了p和q会是什么?
| 归档时间: |
|
| 查看次数: |
515 次 |
| 最近记录: |