我正在尝试将存储在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 < rA
。在其他地方也是类似的。 - MaheshrB
难道不总是等于cA
,而rC
没有被使用吗?一般来说,我认为你只需要三个尺寸(ra=rC
,rb=cA
和cb=cC
,如果我没记错的话),而不是六个;考虑消除未使用的参数以减少混淆。 - Sergey Kalinichenko