これまでxnewで生成されたオブジェクトは16byteアライメントを持っていてもいなくても、関係なくmallocで取得したメモリに配置していました。 普通のnewも同様に、関係なく配置します。 なのでアライメントの問題はどうしようもないだろう、と思っていたのですが、 ゲームにおいては、16byteアライメントを持つことはよくありうる、といったこともあり、対応することにしました。 どうやって対応するか、この一週間悩んでやっと実装できました。 xnewで生成されたオブジェクトは、16byteアライメントを持つメンバがある場合16byteアライメントを保障します。 持たないオブジェクトに関してはこれまでどおりです。 #include <xmmintrin.h> struct Vec128{ __m128 a; }; struct Spr{ Vec128 v; }; XTAL_BIND(Spr){