堆栈和堆内存

时间:2011-01-21 09:55:40

标签: stack

我的问题是 什么是堆栈和堆内存 为什么我们需要这两种记忆 每个

的优点和缺点是什么?

3 个答案:

答案 0 :(得分:2)

简而言之:

The stack - 程序用于实际运行程序的内存。它包含局部变量,回调数据(例如,当您调用函数时,堆栈会在您输入新函数之前存储您在代码中的状态和位置),以及其他一些具有这种性质的小事情。您通常不直接控制堆栈,在进出功能范围时会破坏变量和数据。

The heap - 程序的“动态”记忆。每次动态创建新对象或变量时,它都存储在堆上。这个内存由程序员直接控制,你应该负责在那里创建和删除对象。

答案 1 :(得分:1)

在C / C ++语言中,当分配范围结束时,分配到堆栈上的内存将自动释放,堆上的内存必须通过某些策略(free(),delete ...或某些垃圾收集器)释放。堆上分配的内存在不同的功能范围内可见。在堆栈中,我们无法分配大块内存,因此当需要为数据分配大空间时,堆也很有用。

答案 2 :(得分:0)

我不确定你问的是哪种情况,但我可以回答它们在内存分配中的用法。这些数据结构都需要我的平台,如.NET for Garbage collection。请记住,所有值类型都存储在堆栈上,所有引用类型都存储在堆上。这有助于运行时环境创建对象图并跟踪所有未使用的对象,并可以考虑进行垃圾回收。