Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C+的最大堆栈级别是多少+;节目? 我试图看看在C++中通过递归实现堆栈溢出,我能得到多远。我写了这个函数 long recurse( long level ) { std::cout << level << std::endl; return recurse( ++level ) * 12 //to avoid tail recursion optimization, if present } long递归(长级别){ 可用于递归的内存量取决于编译器设置、操作系统和物理平台。没有最小或最大限制_C++_Recursion_Stack Overflow - Fatal编程技术网

C+的最大堆栈级别是多少+;节目? 我试图看看在C++中通过递归实现堆栈溢出,我能得到多远。我写了这个函数 long recurse( long level ) { std::cout << level << std::endl; return recurse( ++level ) * 12 //to avoid tail recursion optimization, if present } long递归(长级别){ 可用于递归的内存量取决于编译器设置、操作系统和物理平台。没有最小或最大限制

C+的最大堆栈级别是多少+;节目? 我试图看看在C++中通过递归实现堆栈溢出,我能得到多远。我写了这个函数 long recurse( long level ) { std::cout << level << std::endl; return recurse( ++level ) * 12 //to avoid tail recursion optimization, if present } long递归(长级别){ 可用于递归的内存量取决于编译器设置、操作系统和物理平台。没有最小或最大限制,c++,recursion,stack-overflow,C++,Recursion,Stack Overflow,当内存不足时,可能会打印出各种错误,一个常见的消息是“分段错误” 为什么它会打印分割错误 这不是只有在未经授权的方式访问内存时才会打印的消息吗 您的程序以未经授权的方式访问内存,方法是要求使用的内存超过可用内存或访问程序作用域之外的内存(分配),因此操作系统很好,并显示分段错误。您的操作系统可能已损坏您的计算机或挂起或重新启动。某些平台显示死机蓝屏。您所要求的是非常依赖于实现的。这取决于许多因素,主要是编译器可用的计算机内存计算机之间的差异很大。当然,这方面没有单一的标准,但您当前遇到的错误,分

当内存不足时,可能会打印出各种错误,一个常见的消息是“分段错误”

为什么它会打印分割错误

这不是只有在未经授权的方式访问内存时才会打印的消息吗


您的程序以未经授权的方式访问内存,方法是要求使用的内存超过可用内存或访问程序作用域之外的内存(分配),因此操作系统很好,并显示分段错误。您的操作系统可能已损坏您的计算机或挂起或重新启动。某些平台显示死机蓝屏。

您所要求的是非常依赖于实现的。这取决于许多因素,主要是编译器可用的计算机内存计算机之间的差异很大。当然,这方面没有单一的标准,但您当前遇到的错误,
分段错误
,是可能被打印的众多错误之一。一些编译器甚至打印
堆栈溢出

如果Lua函数在内存上的权重比C++函数小,我会感到惊讶。

你假设Lua正在使用C++堆栈来做LUA函数调用。< /P> 事实并非如此。Lua有自己的函数堆栈,有自己的限制。就像Lua有自己的内存空间(当然是主机提供的)等等

< C++堆栈的限制是依赖于实现的,不能预先确定。

这不是只有在未经授权的方式访问内存时才会打印的消息吗


是的。这就是你所做的。你试图访问的堆栈空间比分配给你的要多。这就是访问你没有被授权访问的内存。

这是实现定义的这是严重的系统依赖性。当内存不足时,它应该打印什么错误?可能是分段错误?@GillBates它甚至不是实现-d定义。实现不需要记录递归限制。当系统的堆栈空间用完时,您会以“未经授权的方式”访问超出它的内存,因此出现消息。Lua的调用堆栈由Lua运行时管理,完全独立。您可以拥有1 TB的内存,并拥有一个将递归限制为1GB的编译器,或者操作系统将您的程序限制为仅使用2GB。是的,有很多因素,但不一定是平台上的内存量。一个合理的现代操作系统不会使用BSoD在这种情况下。@Kevin:我从来没有认为BSoD是合理的操作,也没有认为操作系统是合理的。-@ThomasMatthews:Windows 95有基本的内存保护,你知道。它会BSoD,但不是因为简单的堆栈溢出。