c++ - C++ 访问冲突读取位置 0xE3A26369
问题描述
我正在尝试创建一个简单的 2D 并在收到此提示时输出数组,即访问冲突读取位置 0xE3A26369。我不知道为什么会发生这种情况,因为我以前做过这个,它从来没有给我这个问题。
{
string Board[6][6] = { "test", "test", "test", "test", "test",
"test", "test", "test", "test", "test",
"test", "test", "test", "test", "test",
"test", "test", "test", "test", "test",
"test", "test", "test", "test", "test" };
for (int i = 0; i < 10; i++)
{
for (int j = 0; j < 10; j++)
{
cout << Board[i][j] << endl; //this line
}
cout << endl;
}
system("pause");
return 0;
}
有人可以向我解释这里发生了什么吗?
解决方案
您正在尝试访问超出范围的数组索引(两个方向的索引 6 到 9),因为Board
它只有 6x6。这会给您带来访问冲突,因为内存超出了程序的范围,并且不允许程序访问它。
要解决此问题,只需在 0 到 5 (<6) 上迭代 i 和 j。此外,请考虑改用向量,因为它们有一个内置size
函数,您可以将其用作边界(v.size()
以及v[0].size
每个方向)。
此外,您只填充Board
了 5x5 值,而不是 6x6,这可能会给您带来您不想要的行为(尽管可能不是您现在看到的错误)。
推荐阅读
- c# - 更改条目文本导致 Xamarin 中的无限循环
- c# - C# 重放存储在文本文件中的 Web 请求
- spring-boot - Spring Batch:没有为 JDBCBatchItemWriter 的 SQL 参数错误提供值
- javascript - 在 Ember Octane 中附加 DOM 元素
- python - KeyError:'未能格式化此回调文件路径:“skintype_64_rmsprop_{val_loss:.3f}.h5”。原因:\'val_loss\''
- flutter - 参数类型“ShowSnackBar”不能分配给参数“SnackBar”
- ruby-on-rails - 我无法在 ruby 中加载库
- google-apps-script - .addFile 似乎已被弃用,我还能使用什么其他方法?
- python - 选择重复的相同字符
- ruby-on-rails - 上午下午而不是 24 小时在轨道上的人性化时间?