c - VC++中栈的大小是多少?

标签 c recursion stack callstack visual-c++

我想要关于 VC++(32 位和 64 位)堆栈溢出的准确信息,特别是在递归中。在 Debug模式下,这种情况很快就会在递归中发生(比如 4500 运行一个简单的递归函数什么都不做)。但是, Release模式似乎有所不同。很难理解,我现在没有测试它,因为优化删除了不做任何事情的代码(显然删除了递归),因为我的代码或函数是如此..我应该做更多..我测量优化发布的正确时间,我不知道优化在递归实现的更复杂的快速排序中是否也有同样的效果?

谢谢!

最佳答案

作为安德烈亚斯·布林克 states in his related answer :

In VC++ the default stack size is 1 MB i think, so with a recursion depth of 10.000 each stack frame can be at most ~100 bytes.

可以使用以下方式修改此堆栈大小限制:

项目 → 属性 → 配置属性 → 链接器 → 系统 → 堆栈保留大小。

Project → Properties → Configuration Properties → Linker → System → Stack Reserve Size.

关于c - VC++中栈的大小是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14001590/

相关文章:

c - 函数返回类型是无符号的,而错误返回 -1

c - 堆栈实现中的引用调用错误(C程序)

javascript - 在 Javascript 中从堆栈读取元素而不丢失它们

c - 冒泡排序中的二维数组

c - 如果 srand() 采用 32 位整数... 为什么 rand() 不返回相同值?

java - 是否有可能比 C 中的相同程序(优化)更快地获得 Java 程序?

javascript - 我的递归函数的 Big-O 分析是什么?

java - 树结构中的递归回溯

python - 你能给我解释一下这个递归的 "n choose k"代码吗?

C# - 即使在正确的通用约束之后,堆栈推送操作也不起作用