【发布时间】:2013-12-02 07:43:44
【问题描述】:
这个问题有几个部分。
根据网上可用的大部分资源以及教科书,堆内存和栈内存的增长方向相反。
堆和堆栈实际上是否总是以相反的方向彼此增长,尤其是当操作系统为堆内存分配额外的内存时?
请考虑,最初在程序中,仅发生堆分配并且使用最少的堆栈内存。因此,堆将覆盖为堆栈和堆分配的几乎整个组合内存。之后,Stack 开始增长。是否会抛出错误或者是否会为 Stack 分配新的内存位置以增长到其最大限制(最大限制 = “ulimit -s”命令显示的限制)?如果可以分配新的位置,那不违反Stack中地址总是按顺序分配的条件吗?
存储在数据部分的已初始化和未初始化变量是否对内存使用有任何预定义限制?
【问题讨论】:
-
只能针对特定的操作系统和处理器架构回答这些问题。操作系统和硬件完全决定了内存管理策略。
标签: c++ c memory-management heap-memory stack-memory