我使用的memcpy到STD的内容复制:矢量<>到primitve阵列。 对于像整数,浮点,双等数据类型,效果不错。 当我开始复制boolvector我遇到了一个问题,即我奇怪的值。
首先,我开始做一个矢量浮点的测试输出:
std::vector<float> test1 (3,0);
cout << "Sizeof test1[0] : " << sizeof(test1[0]) << endl
<< "Memoryaddress 0: " << &test1[0] << endl
<< "Memoryaddress 1: " << &test1[1] << endl
<< "Memoryaddress 2: " << &test1[2] << endl;
输出是:
Sizeof test1[0]: 4
Memoryaddress 0: 02793820
Memoryaddress 1: 02793824
Memoryaddress 2: 02793828
这是我所期望的。 浮子大小为4字节和到下一个浮点值的距离为4字节。 当我这样做对布尔输出看起来是这样的:
std::vector<bool> test (3,0);
cout << "Sizeof test[0]: " << sizeof(test[0]) << endl
<< "Memoryaddress 0: " << &test[0] << endl
<< "Memoryaddress 1: " << &test[1] << endl
<< "Memoryaddress 2: " << &test[2] << endl;
输出是:
Sizeof test[0]: 16
Memoryaddress 0: 011EF94C
Memoryaddress 1: 011EF93C
Memoryaddress 2: 011EF92C
为什么是布尔16字节的大小? 这似乎是一个总矫枉过正给我。 是否有这样的解释?