问题描述
当我看到提示访问冲突读取位置0xE3A26369的提示时,我正在尝试创建一个简单的2D并输出数组。我不知道为什么会这样,因为我以前做过,但是从来没有给我这个问题。
{
string Board[6][6] = { "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;
}
有人可以向我解释这里发生了什么吗?
解决方法
由于Board
仅为6x6,因此您试图访问超出范围的数组索引(两个方向的索引6到9)。这会给您带来访问冲突,因为内存超出了程序范围,并且不允许程序访问它。
要解决此问题,请仅在0到5(vectors,因为它们具有内置的size
函数,您可以将其用作边界(每个方向的v.size()
和v[0].size
)。>
此外,您只用5x5的值填充了Board
,而不是6x6的填充,这可能会给您带来您不想要的行为(尽管可能不是您现在看到的错误)。