Interlocked* 関数呼び出しで使用されるメンバーを持つクラスを持つレガシー コードがいくつかあります。
私が持っているいくつかのメンバー変数が 4 バイト境界に配置されていることを確認したい (InterlockedIncrement で使用するには、http://blogs.msdn.com/b/oldnewthing/archive/2004/08/30/222631.aspxを参照) .
VS 2010 の構造体メンバーのデフォルトのアラインメントを指定する決定的なものは見つかりません。実験的に、デフォルトのパッキングを変更せずに構造体を 4 バイト アラインメントに違反させることはできませんでした。私が知ることができたのは、デフォルトのパッキングが 8 バイトであり、どこでもそれを使用していることだけです。
http://blogs.msdn.com/b/oldnewthing/archive/2004/08/30/222631.aspx
私が知りたいのは、Interlocked* 呼び出しで使用されるすべての変数に __declspec(align(4)) を追加する必要があるかということです。
編集:パッキングとその方法について知っています。具体的でなくてすみません。また、CRT はすべての構造体を割り当て、デフォルトで 8 バイトのパッキングが与えられた場合、すべての構造体メンバーがデフォルトで 4 バイト境界に整列されるようにしますか?
32 ビットの int 静的変数はデフォルトで整列されますか? VS に関するドキュメントを探していますが、デフォルトを説明するドキュメントを見つけるのに苦労しています。