gpt4 book ai didi

c - 微 Controller 在 malloc 失败

转载 作者:太空狗 更新时间:2023-10-29 17:13:50 24 4
gpt4 key购买 nike

我正在 32 位 cortex m4 微 Controller 上编写函数。该函数必须能够乘以不同大小的矩阵,这是我无法预测的。所以我必须使用 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, 3, &sunMeasurements[0][0], 3, 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() 类函数进行了初始化。

关于c - 微 Controller 在 malloc 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29890661/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com