0

我想知道是否可以进行以下构造:

typedef std::bitset<4> BIT4;
BIT4* x=new BIT4[3];
BIT4* y=new BIT4[5];

我的担忧是:

(1) BIT4 的数组是否合法?

(2) 如果是,指针将如何寻址这些大小为 3 和 5 的数组?这些数组的最后一个元素似乎占用了 1/2 字节,另一半刚刚丢失,我们从新字节开始下一个数组,或者它是如何工作的?

感谢您的帮助!

4

1 回答 1

0

据我了解,您正在尝试做的是

对名为 x 的数组中的 3 个元素使用 12 位

对名为 y 的数组中的 5 个元素使用 20 位

这是错误的,因为您最终将使用:

  • x 为 3 个字节
  • y 5 个字节

如果你想实现你想要的,你需要这样做:

std::bitset<4*3> x;   // this will occupy 12 + 4 Padding Bits = 2 bytes
std::bitset<4*5> y;   // this will occupy 20 + 4 Padding Bits = 3 bytes

如果您愿意,您当然可以动态分配它。

于 2012-08-08T23:20:51.163 回答