そしてMSDNから死の宣告

Note that normal allocators, such as malloc, C++ operator new, and the Win32 allocators return memory that will most likely not be sufficiently aligned for __declspec(align(#)) structures or arrays of structures.

要するに,mallocとかnewしたら,その構造体はアラインされませんよ.ということだそうです._aligned_mallocなんていう関数もあるようですが,なんだか大変そうだなぁ.素直にコンパイラの最適化を切ったほうがいいかもしれない.