我怎么能得到一个堆栈溢出在c++和Unix

How can I get a stack overflow in C++ and Unix?

本文关键字:栈溢出 堆栈 c++ Unix 一个 怎么能      更新时间:2023-10-16

我想知道如何获得堆栈溢出错误与一个简单的例子,如:

int recursSum (int n)
{
   return (n==1)? 1:n+recursSum(n-1);
}

我问那个愚蠢的问题,因为我只有一些分割错误,即使有一个空函数调用自己…

我错过了什么,还是有任何保护或阻止我这样做的东西?

段错误意味着内存保护启动并阻止您访问没有可用的内存。这可能有多种原因,其中一个原因是堆栈溢出(将堆栈溢出到其他内存段)。

如果使用负或0整数参数调用函数,则将面临无限递归。然而,编译器可能会对特定的函数进行尾部调用优化,除非在调试模式下,否则您永远不会看到堆栈溢出。分割错误在其他地方

堆栈溢出是一种分段错误,它看起来就像你的系统刚刚输出了一个通用错误。

您可以在这里阅读更多内容:http://en.wikipedia.org/wiki/Segmentation_fault

Foo()
{
    float f[1024];
    Foo();
}

f是一个虚拟变量,可以帮助快速填充堆栈。