给定具有无限递归的C程序:
int main() {
main();
return 0;
}
为什么这会导致堆栈溢出。我知道这会导致C++中的未定义行为来自下面的线程 (并且作为边节点,不能在C++中调用main() )。然而,val差尔告诉我,这会导致堆栈溢出:
Stack overflow in thread 1: can't grow stack to 0x7fe801ff8
最后,由于分段错误,程序结束:
==2907== Process terminating with default action of signal 11 (SIGSEGV)
==290
在Eclipse中编辑JSP时,我周期性地得到堆栈溢出。一旦我获得了一个堆栈溢出,每次我点击一个字符,我就会得到一个弹出窗口,告诉我有另一个堆栈溢出。这将一直持续到我关闭JSP并重新打开它,此时它会正常工作一段时间。
org.eclipse.jst.jsp.core.internal.parser.JSPSourceParser:
input could not be parsed correctly at position 1
java.lang.StackOverflowError
其他人有没有看到这个问题,你知道原因吗,有没有办法解决这个问题?
因此,我有以下代码,其中在堆上有一个类x,并返回它的值。假设在堆栈上声明res,则会导致堆栈溢出。然后,在下面的代码中,由于我返回存储在堆上的值,它会导致堆栈溢出吗?我必须返回指向x的指针吗?
x func ()
{
x* res = new x;
// code
return *res;
}
int main ()
{
x* s = new x;
*s = func();
}
也是,我知道我没有delete字符串。
编辑:从std::string改为class x。
我们有一个在IIS下运行的服务,它可能会因为堆栈溢出而崩溃。然而,从事件日志中看不出发生了什么。我看到的都是
Faulting application name: w3wp.exe, version: 7.5.7601.17514, time stamp: 0x4ce7afa2
Faulting module name: clr.dll, version: 4.0.30319.18444, time stamp: 0x52717f9a
和
A process serving application pool 'x' suffered a fatal communication
正如许多人所建议的,命名函数表达式的用法之一是递归地调用自己。然而,似乎在Chrome控制台中,没有名称的函数表达式仍然可以做到这一点。
编辑:我知道这将是堆栈溢出,但是,我希望像a() is not a function这样的输出,而不是未登录的RangeError:超过最大调用堆栈大小(…)。
var a = function () {
a();
}
a();
以下具有名称的函数表达式应该为我提供一个未命名的RangeError:最大调用堆栈大小超出(…)。
var a = function a () {
a();
我正在做一个程序,把所有奇数加起来都是n:
oddSum' n result | n==0 = result
| otherwise = oddSum' (n-1) ((mod n 2)*(n)+result)
oddSum n = oddSum' n 0
我的输入有两个错误(我已经把它们放在下面),我使用尾递归,那么为什么会发生堆栈溢出呢?(注意:我在Ubuntu上使用Hugs )
oddSum 20000错误控制堆栈溢出
oddSum 100000错误-垃圾收集无法回收足够的空间