memcmpで構造体の一致を取れないのは、コンパイラがアライメントを取るためのパディング(不定)が挿入されるため。
じゃぁ、このパディングの値を0とか固定にすれば問題ないと思うんだけど、そういうオプションってVC++にないのかな?
もちろん、固定値に初期化するためのコストはかかっちゃうんだけど、それ以上にコードがスッキリする利点が大きい場合には有用だと思う。