可能的复制品:
堆栈和堆 的位置和内容
我在用 C + + 编程,我总是想知道堆栈内存和堆内存到底是什么。我所知道的是,当我调用 new 时,我将从堆中获取内存。如果创建本地变量,我将从堆栈获取内存。经过对互联网的一些研究,最常见的答案是堆栈内存是临时的,堆内存是永久的。
堆栈和堆内存模型是操作系统还是计算机体系结构的概念?所以有些内存可能不遵循堆栈和堆内存模型,或者所有内存都遵循堆栈和堆内存模型?
堆栈和堆内存是对虚拟内存(可能在磁盘和 RAM 之间交换内存)的内存模型的抽象。所以堆栈和堆内存在物理上都可能是 RAM 或磁盘?那么堆分配似乎比堆栈分配慢的原因是什么呢?
还有,主程序是在堆栈中运行还是在堆中运行?
另外,如果进程用完了分配的堆栈内存或堆内存,会发生什么情况?
Thanks