为什么堆内存会出现?

the*_*t33 -1 c c++ memory

我的问题非常基本,正如标题所说,我想知道为什么堆内存会出现.我知道堆内存支持动态内存分配,但是当RAM上存在两种类型的内存(静态和堆)时,为什么不能通过/在堆栈内存中完成相同的操作.为什么需要在进程地址空间中有单独的内存段.虽然发布了这个问题我遇到了几个与堆内存主题相关的帖子,但到目前为止我已经检查过没有回答我的问题而不是更多关于堆内存的定义和行为.为了更清楚我的问题,为什么不能有一个大的堆栈内存也处理动态内存分配.我们知道动态内存是动态创建的东西,可以在需要时释放.

Jer*_*ner 10

使用堆栈分配时,对于已分配对象的生命周期,存在严格的LIFO(后进先出)策略.也就是说,如果你分配对象A,然后是对象B,然后是对象C,它们将始终以相反的顺序被释放.

这在很多情况下都很有用,但也有一些情况,例如你希望在B和A被销毁之后对象C继续存在.使用堆栈无法做到这一点,因此为了处理这些情况,引入了堆.它比堆栈分配更难正确使用,但也更灵活/更强大.