微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

微控制器在malloc失败

我正在32位cortex m4微控制器上编写函数.
函数必须能够乘以不同大小的矩阵,这是我无法预测的.所以我必须使用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);
}

解决方法

malloc()在此代码的其他部分工作正常吗?在编写嵌入式设备时,堆可能没有正确初始化,或者已经为另一个自定义的malloc()函数初始化了.

原文地址:https://www.jb51.cc/c/118440.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐