我试图将存储在1d数组内的两个矩阵相乘。使用1d数组的矩阵乘法
我正在使用这个函数,但是我的程序崩溃了,我认为是由于出了界限错误。 不过,我没有(容易)调试能力,所以我必须决定是否我的代码是正确的,对我来说似乎是...
void SampleUtils::multiplyMatrices(float* matA, int rA, int cA, float* matB,
int rB, int cB, float* matC, int rC, int cC) {
for (int i = 0; i <= rA; i++) {
for (int j = 0; j <= cB; j++) {
float sum = 0.0;
for (int k = 0; k <= rB; k++)
sum = sum + matA[i * cA + k] * matB[k * cB + j];
matC[i * cC + j] = sum;
}
}
所以,任何人都可以找出我做了什么错误?
谢谢...
如果'rA'是矩阵的行数,则条件** **必须是'I
Mahesh
2012-04-20 19:50:23
1.使用调试器找出崩溃的位置。 2.使用向量并调用'at'以获得抛出的异常,如果它是超出界限的错误。 – chris 2012-04-20 19:50:23
“...对我来说,它似乎是....” - 事实上,你的程序崩溃告诉你,这个说法是相当不正确的。如果您从假设您的代码错误开始,那么您会更快地找到解决方案,而您就是这样做的。 – duffymo 2012-04-20 19:50:30