C++ visual c+中SSE编程中的异常+;

C++ visual c+中SSE编程中的异常+;,c++,visual-studio-2012,sse,intrinsics,C++,Visual Studio 2012,Sse,Intrinsics,我在Visual Studio 2012中编写了这些简单的C++代码用于SSE编程,但是当我运行时,异常符合 void SSE( float* pArray1, // [in] first source array float* pArray2, // [in] second source array float* pResult,

我在Visual Studio 2012中编写了这些简单的C++代码用于SSE编程,但是当我运行时,异常符合

void SSE(
          float* pArray1,                   // [in] first source array
          float* pArray2,                   // [in] second source array
          float* pResult,                   // [out] result array
          int nSize)                        // [in] size of all arrays
{
    int nLoop = nSize/ 4; 
    __m128 m1, m2, m3, m4;    
    __m128* pSrc1 = (__m128*) pArray1;
    __m128* pSrc2 = (__m128*) pArray2;
    __m128* pDest = (__m128*) pResult;

    for ( int i = 0; i < nLoop; i++ )
    {
        m1 = _mm_mul_ps(*pSrc1, *pSrc1);        // m1 = *pSrc1 * *pSrc1
        m2 = _mm_mul_ps(*pSrc2, *pSrc2);        // m2 = *pSrc2 * *pSrc2
        m3 = _mm_add_ps(m1, m2);                // m3 = m1 + m2    
        *pDest = m3;                     
        pSrc1++;
        pSrc2++;
        pDest++;
    }
}


int main( int argc, char** argv ) {      
    float* A=new float[20];
    float* B=new float[20];
    float* C=new float[20];     
    for(int i=0;i<20;i++)
    {
        A[i]=B[i]=C[i]=i;       
    }
    SSE(A,B,C,20);    
    cout<<C; 
    return 0;
}

您的阵列没有按照SSE要求对齐-这可能是未定义的行为。如果代码崩溃,您可以对其进行调试并查看崩溃的确切位置。另请参见:@user,到底是什么解决了这个问题?让评论者知道他们中的哪一个最终对你帮助最大,然后他们可以发布答案,你选择它作为解决方案。
Unhandled exception at 0x00CA29BE in SSE.exe: 0xC0000005: Access violation reading location 0xFFFFFFFF.