C++堆栈溢出
C++ Stack Overflow?
我写了一个递归函数(nextMove),旨在通过Win 32控制台中由12x12矩阵表示的迷宫找到方法。不幸的是,当我尝试使用 Visual Studio 运行它时,控制台会话在几十次迭代后异常终止,并且在没有给我任何信息的情况下消失了。
这是堆栈溢出吗?
可能是因为我正在矩阵中阅读,定义一些变量并在 nextMove 中调用其他函数,这对堆栈来说太多了,并且很难理解它......但我不确定。
递归函数如下:(提前道歉,它不会赢得任何美容/优雅比赛,因为我对编程很陌生)
void nextMove(char A[size][size], int lRow, int lCol, int cRow, int cCol)
{
A[lRow][lCol] = '.';
A[cRow][cCol] = 'X';
printMatrix(A);
if (isBorder(cRow, cCol)) { return; }
else {
int r, c; // temporary row and col
int lastMove = move(cRow - lRow, cCol - lCol);
for (int i = -1; i <= 2; i++) {
r = cRow + row((lastMove + i) % 4);
c = cCol + col((lastMove + i) % 4);
if (allowableMove(A, r, c)) {
nextMove(A, cRow, cCol, r, c);
break;
}
} // end for
} // end else
} // end nextMove
向大家道歉,并感谢您的回复。
经过更多调试,我找到了问题的答案,这与堆栈溢出无关。
这是因为我假设C++运算符%的工作方式类似于模块化算术的数学版本,仅输出0,1,...,n-1(mod n)。
当我意识到情况并非如此(-1 % 4 是 -1,而不是 3)时,我能够修改我的代码以使算法正常工作。
感谢所有的帮助!
相关文章:
- 在 leetcode 上提交解决方案时出现堆栈缓冲区溢出错误
- 我的 int main() 中出现堆栈溢出错误
- C++ 对象数组堆栈溢出
- 有没有一种方法可以捕获进程中的堆栈溢出?C++Linux
- 对象接收堆栈溢出异常 c++ 的排序向量
- 将公共递归转换为尾递归,因为大型输入的堆栈溢出
- C++ 中递归期间的堆栈溢出
- 启动 dll 时 C# 环境堆栈溢出
- 在C++中使用数组时如何防止堆栈溢出?
- 如何修复递归函数导致的堆栈溢出错误?C++
- 当我尝试为结构分配新指针时出现堆栈溢出错误
- 为什么析构函数无休止地调用自己(导致堆栈溢出)?
- 为什么堆栈溢出?如有建议,不胜感激
- 主函数执行时C++堆栈溢出异常
- 如何在不导致堆栈溢出的情况下计算非常大的数字和很小的 HCF.我正在使用欧几里得算法
- 递归克隆图时的堆栈溢出
- 防止 CRTP 特征码在"pure virtual"调用中堆栈溢出
- 静态数组溢出堆栈(seg 错误 11)仅在类定义内部时,否则不会..?
- 使用递归的溢出堆栈
- c++中栈溢出和分段错误的危险