Я пытаюсь изучить инструкции SSE, и я стремлюсь умножить два мата. Однако, когда я пытаюсь инициализировать один из них, программа вылетает сОбъявление указателя объединения с указателем внутри
Access violation when typing in location
Вот код, который бросает ошибку:
typedef union{
__m128 vec;
float* afloat;
}u_float;
int main(){
__declspec(align(16)) u_float *mat1;
mat1 = (u_float*)malloc(sizeof(u_float)*4);
for(int i = 0; i < 4; i++)
mat1[i].afloat = (float*)malloc(sizeof(float)*4);
for(int i = 0; i < 4; i++)
for(int j = 0; i < 4; j++)
mat1[i].afloat[j] = 1; // Error.
return 0;}
- Почему метание эту ошибку?
- И что является лучшим способом решения проблемы?
Каким образом этот вопрос связан с инструкциями SSE? – zx485
@ zx485 Позже я буду использовать функции '_mm_mul_ps' и' _mm_hadd_ps' для умножения матов. Однако главная проблема здесь не имеет ничего общего с SSE. – blackout
Какая черта в этом союзе? Как последний код решает, имеет ли он значение '__m128' или указатель? Вы хотели написать '__m128 * vec'? –