【发布时间】:2023-02-22 01:38:51
【问题描述】:
我在大学第一年的编码课上遇到了这个错误,我的老师没有帮助,想知道是否有人可以帮助解释发生了什么。
“在 randomarray.exe 中的 0x00007FF695CF4C6E 抛出异常:0xC0000005:访问冲突写入位置 0x000000FBA47E0000。”
它是一个超级简单的程序,只是为 10 位数组的每个值分配一个随机数,我对一般编码非常陌生,所以我完全迷路了。
完整代码:
#include <cstdlib>
#include <iostream>
using namespace std;
int main()
{
int result[10];
for (int i = 0; 1 <= 10; i++)
{
result[i] = rand();
}
}
我尝试将 result[10] 从 int、double、long 更改为老实说我完全迷失了我什至不完全理解它说的问题是什么,更不用说如何解决它了。
【问题讨论】:
-
1 <= 10总是正确的。循环是无限的,这是未定义的行为。 -
你超出了数组的范围。记住
int result[10]只能访问 0 到 9。在这里你吹方式过了最后并最终写信给不属于你的记忆,因此是“访问冲突”。 -
有两个错别字:
1->i和<=-><。或者您可以使用基于现代范围的 for 循环:for(auto& x : result) x = rand();。
标签: c++