コンパイラの警告 (レベル 4) C4366

'operator' 単項演算子の結果が、整列されていない可能性があります

構造体のメンバーがパッキングのために整列されていない場合、整列されたポインターにそのメンバーのアドレスが割り当てられるときに、コンパイラによって警告されます。 既定では、すべてのポインターがアラインされます。

C4366 を解決するには、構造体のアラインメントを変更するか、__unaligned キーワードを使用してポインターを宣言します。

詳細については、__unaligned と pack に関するページをご覧ください。

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

// C4366.cpp
// compile with: /W4 /c
// processor: IPF x64
#pragma pack(1)
struct X {
   short s1;
   int s2;
};

int main() {
   X x;
   short * ps1 = &x.s1;   // OK
   int * ps2 = &x.s2;   // C4366
}