繁体   English   中英

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

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

我的代码中出现 C6385 警告问题。 我正在尝试查看两个 arrays 是否彼此相等。 我不断收到的警告在 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 警告文档指出:

缓冲区的可读范围可能小于用于从中读取的索引。 尝试读取有效范围之外的数据会导致缓冲区溢出。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM