我正在32位cortex m4微控制器上编写函数.
该函数必须能够乘以不同大小的矩阵,这是我无法预测的.所以我必须使用malloc ……
该函数必须能够乘以不同大小的矩阵,这是我无法预测的.所以我必须使用malloc ……
但我不明白为什么我的mc在执行以下行时总是进入默认处理程序中断:
- double *output2=NULL;
- output2 = malloc(3 *1* sizeof(double *));
这个mc是不是能够处理这种类型的操作?
虽然这在我的笔记本电脑上工作得很好!
**编辑*
这里有一些代码(仍然需要修改……):
好吧所有的malocs都失败了.我无法为“malloced”数组赋值.
- int main (void)
- {
- /*some stuff*/
- float transFRotMatrix[3][3]={0}; //array gets modified by other functions
- float sunMeasurements[3][1] = {{1},{2},{3}}; //test values
- multiplyMatrices( &transFRotMatrix[0][0],3,&sunMeasurements[0][0],1,*orbitalSunVector);
- /*some stuff*/
- }
- void multiplyMatrices(float *transposedMatrix,int height1,int width1,float *iSunVector,int height2,int width2,float *orbitalSunVector)
- {
- int y=0;
- int x = 0;
- int row=0;
- int column =0;
- int k=0;
- int k2 = 0;
- float result = 0;
- int i=0;
- int j=0;
- int t=0;
- float rotationMatrix[3][3]={0};
- i=0;
- k=0;
- k2 = 0;
- if(width1 != height2)
- {
- printf("unmatching matrices,error.\n\n");
- return;
- }
- float *output2;
- output2 = malloc(3 *1* sizeof(float *)); //<-----ERROR
- while(k<width1) //aantal rijen 1ste matrix
- {
- for(j=0;j<height2;j++) //aantal rijen 2de matrix
- {
- result += (*((transposedMatrix+k*width1)+j)) * (*((iSunVector+j*width2)+k2)); //1ste var:aantal kolommen 2de matrix --2de variabele na de plus = aantal kolommen 2de matrix
- //printf("%f * %f\t + ",(*((transposedMatrix+k*width1)+j)),(*((iSunVector+j*width2)+k2)));
- }
- output2[k*3 +k2] = result; //<-----FAILS HERE
- k2++;
- x++;
- column++;
- if(x==width2)
- {
- k2=0;
- x=0;
- column=0;
- row++;
- y++;
- k++;
- }
- result = 0;
- }
- for(i=0;i<height1;i++)
- {
- for(j=0;j<width2;j++)
- {
- orbitalSunVector[j * height1 + i] = output2[i*3 +j];
- }
- }
- free(output2);
- }