重複の可能性:
SSE、組み込み関数、およびアライメント
私はSIMDプログラミングに慣れていないので、明らかな質問をしている場合は失礼します。
私は少し実験していて、動的に割り当てられた構造にSIMD値を格納したいところに到達しました。
コードは次のとおりです。
struct SimdTest
{
__m128 m_simdVal;
void setZero()
{
__m128 tmp = _mm_setzero_ps();
m_simdVal = tmp; // <<--- CRASH ---
}
};
TEST( Plane, dynamicallyAllocatedPlane )
{
SimdTest* test = new SimdTest();
test->setZero();
delete test;
}
CRASHコメントでマークされたメソッドを実行すると、次の例外を除いてコードがクラッシュします。
Unhandled exception at 0x775315de in test-core.exe: 0xC0000005: Access violation reading location 0x00000000
誰かが割り当て操作が壊れた理由と、SIMDを含むオブジェクトを動的に割り当てて正常に機能させる方法を説明してもらえますか?
SimdTestオブジェクトを静的にインスタンス化してsetZeroメソッドを呼び出すと、すべてが正常に機能することを追加する必要があります。
ありがとう、パクサス