gpt4 book ai didi

c++ - 如何修复编译器警告 C6386 和 C6385?

转载 作者:行者123 更新时间:2023-12-03 12:06:24 26 4
gpt4 key购买 nike

对于我正在编写的程序,我需要创建一个用户定义大小的数组,以及 -15 到 15 之间的随机值。因此,我使用 srand 和动态数组转换。这是我下面的完整代码:

#include <iostream>
#include <cstdlib>
#include <ctime>

using namespace std;

int main()
{
//initialize variables
double minValue;
double maxValue;
double firstQuartile;
double thirdQuartile;
double skewness;

int size;
std::cout << "Please enter the size of the data set: "; //get data set size from user
std::cin >> size;
int* dataSet = new int[size];
cout << endl << "These are the randomly generated values: ";

srand(static_cast<unsigned int>(time(NULL)));

int i = size;
for (int x = 0; x < i; x++) //generate random numbers
{
dataSet[i] = (rand() % 31) - 15;
cout << dataSet[i] << " ";
}


}

虽然它仍然可以编译,但我需要它在没有错误的情况下这样做,并且我在下面突出显示的部分导致了两个我不知道如何修复的错误。

int i = size;
for (int x = 0; x < i; x++) //generate random numbers
{
dataSet[i] = (rand() % 31) - 15;
cout << dataSet[i] << " ";
}

C6386 写入“dataSet”时缓冲区溢出:可写入大小为“size*4”字节,但可能写入“i”字节。

C6385 从“dataSet”读取无效数据:可读大小为“size*4”字节,但可以读取“i”字节。

最佳答案

在这个循环中,索引变量 x 不是 i。

所以像这样改变循环

int i = size;
for (int x = 0; x < i; x++) //generate random numbers
{
dataSet[x] = (rand() % 31) - 15;
cout << dataSet[x] << " ";
}

事实上,变量 i 是多余的,容易导致代码出错。为什么不写

for (int i = 0; i < size; i++)                                         //generate random numbers
{
dataSet[i] = (rand() % 31) - 15;
cout << dataSet[i] << " ";
}

关于c++ - 如何修复编译器警告 C6386 和 C6385?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60218007/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com