次の方法で共有


コンパイラ エラー C2229

型 'identifier' にサイズが 0 の無効な配列があります

構造体またはビット フィールドのメンバーに、最後のメンバーではないサイズ 0 の配列が含まれています。

構造体の最後のメンバーとしてサイズ 0 の配列を持つことができるため、構造体を割り当てるときは、そのサイズを指定する必要があります。

サイズ 0 の配列が構造体の最後のメンバーではない場合、コンパイラは残りのフィールドのオフセットを計算できません。

次の例では C2229 が生成されます。

// C2229.cpp
struct S {
   int a[0];  // C2229  zero-sized array
   int b[1];
};

struct S2 {
   int a;
   int b[0];
};

int main() {
   // allocate 7 elements for b field
   S2* s2 = (S2*)new int[sizeof(S2) + 7*sizeof(int)];
   s2->b[6] = 100;
}