我正在经历其中一个线程。 程序崩溃是因为 它在函数内部声明了一个 10^6 的数组。
给出的原因是堆栈上的内存分配失败导致崩溃。
当全局声明同一个数组时,它运行良好。(堆上的内存保存了它)。
现在,让我们假设, 堆栈向下增长并向上堆。
我们有:
---堆叠---
--------------------
---堆----
现在,我相信如果堆栈分配失败, 它也必须在堆上失败。
所以我的问题是:堆栈大小有限制吗? (越界导致程序崩溃)。 还是我遗漏了什么?
最佳答案
是的,堆栈总是有限的。在多种语言/编译器中,您可以设置请求的大小。
通常默认值(如果不是手动设置)大约是 当前语言的 1MB,这就足够了,除非你做了一些通常不推荐的事情(比如你在堆栈上分配巨大的数组)
关于c - 堆栈内存有限制吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2780100/