我在 C++ 程序中遇到堆栈溢出异常

Posted

技术标签:

【中文标题】我在 C++ 程序中遇到堆栈溢出异常【英文标题】:I'm getting a stack overflow exception in C++ program 【发布时间】:2012-12-10 22:44:24 【问题描述】:

我得到一个 system.*** 异常。

我认为它发生在 insert() 函数内部的某个地方。

void insert(char* word)
    int r1 = rand()%x;         // Here is where I suspect the problem starts
    int c1 = rand()%x;
    if(gameBoard[r1][c1]=="") 
        gameBoard[r1][c1] = word;
        insertWordCopy(word);
     else 
        insert(word);
    

【问题讨论】:

将您的代码缩减到最低限度以重现或失败,显示哪一行是81,这会很有帮助。 哇...只是转储你的整个程序并说,“怎么了?”在这里不会很好用。 您是否使用调试器单步执行代码? “第 81 行附近”,您希望我们开始数数吗?您至少可以粘贴行号代码.. 对不起,我不是打算在这里“转储”我的代码,我打算只放第 81 行块,但由于我不确定问题出在哪里,我认为最好的选择是把我的整个程序 【参考方案1】:

以下是不正确的,因为它比较了指针:

if(gameBoard[r2][c2]=="") 

因此,代码几乎肯定总是沿着else 分支向下,导致无限递归。

【讨论】:

以上是关于我在 C++ 程序中遇到堆栈溢出异常的主要内容,如果未能解决你的问题,请参考以下文章

傻程序中的堆栈溢出异常

c++堆栈溢出问题?

如何在 c / c++ 程序中检测可能/潜在的堆栈溢出问题?

OpenCL 堆栈溢出。如何解决?

C++ 堆栈溢出初始化数组

为啥这个 BigInteger 值会导致堆栈溢出异常? C#