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 に答える