可能是重复问题:
堆和栈分别是什么?它们在哪里?
我在使用C++编程时经常会想知道栈内存与堆内存的区别。我只知道当调用new时,我可以从堆中获得内存。如果创建局部变量,我可以从栈中获得内存。在互联网上进行了一些研究之后,最常见的答案是栈内存是临时的,堆内存是永久的。
栈和堆内存模型是操作系统还是计算机体系结构的概念?因此,其中一些可能不遵循栈和堆内存模型,或者它们都遵循它?
栈和堆内存是虚拟内存的内存模型抽象(可能会在磁盘和RAM之间交换内存)。因此,栈和堆内存物理上可能是RAM或磁盘?那么为什么堆分配似乎比栈分配要慢呢?
此外,主程序会在栈中还是堆中运行?
另外,如果进程的栈内存或堆内存耗尽会发生什么?
谢谢