8

1d 配列内に格納されている 2 つの行列を乗算しようとしています。

この関数を使用していますが、範囲外エラーが原因でプログラムがクラッシュします。ただし、デバッグする (簡単な) 能力がないため、コードが正しいかどうかを判断する必要があります。

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;
        }

    }

それで、誰かが私が間違ったことを見つけることができますか?

ありがとう...

4

2 に答える 2

11

ループ<の代わりに意味がある可能性が<=あります。for

于 2012-04-20T19:50:41.030 に答える
7

i < rA、、j < cBを使用してみてk < rBくださいfor

于 2012-04-20T19:50:53.903 に答える