指向位组数组

时间:2012-08-08 22:58:46

标签: c++ arrays memory-address bitset

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

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

我担心的是:

(1)BIT4的数组是一个合法的结构吗?

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

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

据我所知,你要做的是

在名为x

的数组中使用12位代表3个元素

在名为y

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

这是错误的,因为你最终会使用:

  • x
  • 的3个字节
  • 5个字节,用于y

如果你想达到你想要的,你需要这样做:

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

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