如何修复我的代码,以免收到 C6385 警告?

How can I fix my code so I don't get a C6385 warning?

我的代码中出现 C6385 警告时遇到问题。我正在尝试查看两个数组是否彼此相等。我不断收到的警告位于 if(p[i] == inputGuess[j]) 行。我尝试重做这些行,但我不断收到相同的警告。有谁知道我做错了什么。这也是我第一次用C++编程。

#include <time.h>
#include <stdlib.h>
#include <stdio.h>
#include "Game.h"
#include <iostream>
#include <iomanip>

using namespace std;

int* generateNumbers(int n, int m) {

    // Intialize random number
    srand(static_cast<unsigned int>(time(NULL)));

    // Declare array size to generate random numbers based on what is between 1 to (m)
    int* numbers = new int[n];

    for (int i = 0; i < n; i++) {
        numbers[i] = (rand() % m) +1;
        cout << numbers[i]<< "  " << endl;

    }

    return numbers;


}

void Game::guessingGame(int n, int m) {
    int* p;
    int sum = 0;

    // Call the generateNumber function
    generateNumbers(n, m);
    
    // Declare array based on user guesses
    inputGuess = new int[n];

    p = generateNumbers(n,m);

    for (int i = 0; i < n; i++) {
        cin >> inputGuess[i];
    }
    // See if the user guesses and computers answers match up
    for (int i = 0; i < n; i++) {
        for (int j = 0; i < n; j++) {
            if (p[i] == inputGuess[j]){  //Where I keep getting the C6385 Warning
                sum++;
                break;
        }
        }
    }
    
}

C6385 警告文档指出:

The readable extent of the buffer might be smaller than the index used to read from it. Attempts to read data outside the valid range leads to buffer overrun.

https://docs.microsoft.com/en-us/cpp/code-quality/c6385?view=msvc-160

您的第二个 if 语句比较 i < n 而不是 j < n 并且由于 i 从未在内部修改,因此它将永远 运行。这会导致警告,因为您将越界访问内存。修复比较。