c - 堆栈内存有限制吗?

标签 c memory-management operating-system heap-memory stack-memory

我正在经历其中一个线程。 程序崩溃是因为 它在函数内部声明了一个 10^6 的数组。

给出的原因是堆栈上的内存分配失败导致崩溃。

当全局声明同一个数组时,它运行良好。(堆上的内存保存了它)。

现在,让我们假设, 堆栈向下增长并向上堆。

我们有:

---堆叠---

--------------------

---堆----

现在,我相信如果堆栈分配失败, 它也必须在堆上失败。

所以我的问题是:堆栈大小有限制吗? (越界导致程序崩溃)。 还是我遗漏了什么?

最佳答案

是的,堆栈总是有限的。在多种语言/编译器中,您可以设置请求的大小。

通常默认值(如果不是手动设置)大约是 当前语言的 1MB,这就足够了,除非你做了一些通常不推荐的事情(比如你在堆栈上分配巨大的数组)

关于c - 堆栈内存有限制吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2780100/

相关文章:

c - 使用 fscanf 到达特定行后,如何读取整行?

c - 在 C 中的循环中分配和释放内存

c++ - 我必须删除 C++ 中的静态数组吗?

windows - 以管理员身份运行 Go 程序

c - 在内存中查找进程页面(linux-kernel)

c - Linux内核中是否有函数/宏来获取smp机器上的当前抢占状态?

c - 哪条线路出了问题——段错误,即……?

c - 函数指针位置未通过

c - 如何使用Telnet 来测试我的socket 程序?

c++ - 使用 c_str() 返回的指针删除动态分配的 std::string 是否会导致 C++ 中的内存泄漏?