Visual Studio 2012 のコード分析機能を使用しようとしています。既存のプロジェクトでそれらを実行したところ、Knuth の減算 PRNG (別名 RAN3) の独自の実装を含む部分でバッファー オーバーランの警告 ( C6385 / C6386 ) が見つかりました。 . ただし、問題がないように見えるため、なぜこれが発生するのか理解できません(範囲外の読み取り/書き込みは見られません)。そのため、その部分の短い同等物(以下)を作成しましたが、それでも同じ警告が表示され、それらの原因を特定できません。
int main() {
unsigned int k = 1U, seed = 12345U, randomNumbers[55];
randomNumbers[54] = seed;
for(unsigned int i = 1U; i <= 54U; ++i) {
unsigned int ii = ((21U * i) % 55U) - 1U;
randomNumbers[ii] = k;
k = seed - k;
seed = randomNumbers[ii];
}
return 0;
}
上記のコードでは、7 行目に C6386 警告が表示され、9 行目に C6385 警告が表示されました。このコードの何が問題なのですか? 何か不足していますか?