堆栈和堆在c#

Stack and heap in c#

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
What and where are the stack and heap

堆和堆栈之间的C存在差异。我刚刚意识到,我一直认为堆栈是RAM,而堆是硬盘。但现在我不确定是否正确。如果不是这样,那么如果它们存储在一个地方有什么区别呢?


"堆栈"(或者更准确地说,调用堆栈)是自动管理的内存(即使是在"非托管语言"(如C)中):局部变量存储在堆栈中的堆栈帧中,该堆栈帧还包含过程或函数参数以及返回地址,并且可能还包含一些在返回时需要还原的特定于计算机的状态。

堆内存是RAM(或更确切地说:虚拟地址空间)的一部分,用于满足动态内存分配(C中的malloc)。

然而,在C堆和堆栈中,使用是一个实现细节。实际上,引用类型的对象是由堆分配的;值类型数据可以存储在堆栈和堆上,这取决于上下文(例如,如果它是引用类型对象的一部分)。