变量周围的堆栈"random"已损坏

Stack around variable "random" was corrupted

本文关键字:random 已损坏 堆栈 周围 变量      更新时间:2023-10-16

我知道以前有人问过这种类型的问题,但我没有看到任何有助于解决这个问题的东西。每次编译时,我都会收到Stack around变量"random"已损坏的错误。我不确定是什么原因造成的。我只是试图输出-100到100之间的随机数。

谢谢。

srand((unsigned)time(NULL));
int high = 200;
int low = 100;
const int arraySize = 100;
int random[arraySize];

for (int i = 0; i <= arraySize; i++){
    random[arraySize] = rand() % high - low + 1;
    cout << random[arraySize] << endl;
}

您正在访问random[arraySize],相当于未分配的random[100]。数组大小为100,因此有效索引为从099

此外,您可能希望在循环中使用random[i],然后使用

for (int i = 0; i < arraySize; i++){
    random[i] = rand() % high - low + 1;
    cout << random[i] << endl;
}

以覆盖所有元素。

访问random[arraySize]越界。random的有效边界是从0(包括)到array Size(不包括)。

您使用索引不正确。改为写入

srand((无符号)时间(NULL));

int high = 200;
int low = 100;
const int arraySize = 100;
int random[arraySize];

for (int i = 0; i < arraySize; i++){
    random[i] = rand() % high - low + 1;
    cout << random[i] << endl;
}