数组导致程序崩溃c++
Array causing program to crash c++
所以我在为类编写的程序中遇到了一个问题。当试图更改数组元素的值时,我会看到一个窗口,上面写着"程序已停止工作"。
此代码使我的程序崩溃:
case EAST:
cout << "test";
for (int i = 0; i < spaces; i++) {
if (penDown)
board[turtleY][turtleX + i] = 1; //this is the line causing the crash
turtleX += spaces;
}
break;
turtleX和turtleY通过引用传递到此函数中。
void moveForward(int spaces, bool penDown, int &turtleX, int &turtleY, int currentDirection, int board[][NUM_COLS]) {
switch (currentDirection) {
case NORTH:
for (int i = 0; i > spaces; i--) {
if (penDown)
board[turtleY + i][turtleX] = 1;
turtleY -= spaces;
}
break;
case EAST:
cout << "test";
for (int i = 0; i < spaces; i++) {
if (penDown)
board[turtleY][turtleX + i] = 1;
turtleX += spaces;
}
break;
case SOUTH:
for (int i = 0; i < spaces; i++) {
if (penDown)
board[turtleY + i][turtleX] = 1;
turtleY += spaces;
}
break;
case WEST:
break;
}
}
在每个循环中将spaces
添加到turtleY
和turtleX
。
我建议您将语句移到for
循环之外:
case SOUTH:
for (int i = 0; i < spaces; i++) {
if (penDown)
board[turtleY + i][turtleX] = 1;
}
turtleY += spaces;
break;
此外,如果尚未进行边界检查,则需要在向各个方向调整turtleY
或turtleX
之前进行边界检查。
相关文章:
- 当回溯以零开始时,如何调试崩溃
- 内联映射初始化的动态atexit析构函数崩溃
- 执行函数时导致崩溃的变量
- 程序崩溃并显示"std::out_of_range"错误
- CoInitialize()在单独的线程上崩溃而不返回
- 使用调试/崩溃报告将应用程序部署到客户端
- 为什么所有C++编译器都会崩溃或挂起此代码
- 为什么lambda在clang上崩溃而不是在gcc上崩溃
- 为什么我的多线程作业队列崩溃
- ExtractIconEx:可以工作,但偶尔会崩溃
- 为什么引用传递会导致此崩溃(C++)
- 试图创建流或fopen时程序崩溃
- 类对象数组的问题会导致崩溃
- 排序时无法执行交换操作.我做的时候它会崩溃.为什么
- 为什么要增加导致崩溃的指针
- 在虚幻引擎中删除NXOpen对象时崩溃
- 为什么它只打印双链接列表的第一个值,而我的程序却崩溃了
- 应用程序崩溃并显示"symbol _ZdlPvm, version Qt_5 not defined in file libQt5Core.so.5 with link time reference"
- Visual Studio在尝试读取resource.txt文件时崩溃
- 将方法转换为调用该方法的成员函子对象会导致崩溃