3

私はクラスを持っています:

class CMatrix4f
{
public:
    CMatrix4f();

public:
     __declspec(align(16)) float m[16];
};

このクラスは SSE を使用して行列演算を実装するため、動作させるには整合させるm 必要があります。ほとんどの場合は機能しますが、16 バイトで整列されていない_mm_load_psため、SSE 命令を実行すると segfault が発生することがあります。mこれまでのところ、どのような場合に発生するのか理解できません。

私が行うと、整列することCMatrix4f * dynamicMatrix = new CMatrix4f();が保証されますか?dynamicMatrix.m

クラスがある場合:

class MatrixWrapper {
public:
   MatrixWrapper();

   CMatrix4f _matrix;
};

そして、次のようにします。

MatrixWrapper * dynamicMatrixWrapper = new MatrixWrapper();

dynamicMatrixWrapper._matrix.m整列することが保証されていますか?

アラインメントに関する MSDN の記事を読みましたが、動的割り当てで機能するかどうかは不明です。

4

1 に答える 1