gpt4 book ai didi

c++ - C++ 程序的最大堆栈级别是多少?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:27:18 26 4
gpt4 key购买 nike

我试图看看在 C++ 中通过递归到达堆栈溢出之前我能走多远。我写了这个函数

long recurse( long level ) {
std::cout << level << std::endl;
return recurse( ++level ) * 12 //to avoid tail recursion optimization, if present
}

我称之为传递 0 作为第一个值。它打印的最后一个数字是 349411,然后它打印了 Segmentation fault 并停止运行。我的猜测是它耗尽了内存,但是在 Lua 中抛出 stack overflow 错误之前,使用相同值调用的相同函数会打印 499982,如果 Lua 函数的权重如此之小,我会感到惊讶内存比 C++ 函数。

那么 C++ 程序在停止执行之前可以到达的最大堆栈级别是多少?

是真的“直到它有内存”,还是有一个固定的限制?

还有为什么它会打印Segmentation fault

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

最佳答案

可用于递归的内存量取决于编译器设置、操作系统和物理平台。没有最小或最大限制。

当内存不足时,会打印出各种错误,一种常见的消息是“Segmentation fault”。

Also why does it print Segmentation fault?

Isn't that a message only printed when memory is accessed in unauthorized ways?

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

关于c++ - C++ 程序的最大堆栈级别是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39308665/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com