1d配列内に格納された2つの行列を掛けようとしています。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;
}
}
ようです違う?
おかげで...
に
i < rA
、j < cB
、k < rB
を使用してみてください。他の場所でも同様です。 – Mahesh1.デバッガを使用して、クラッシュする場所を特定します。 2.ベクトルを使用し、out-of-boundsエラーの場合は例外をスローするために 'at'を呼び出します。 – chris
"...私にはそれは...." - プログラムがクラッシュするという事実は、このステートメントが間違っていることを示しています。あなたのコードが間違っているという前提から始めれば、より速くソリューションを見つけることができます。 – duffymo