堆栈和堆在c#

Ser*_*gey 13 c# heap stack

可能重复:
堆栈和堆的内容和位置

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

Fra*_*ank 12

"堆栈"(或者更确切地说是调用堆栈)是自动管理的内存(即使在"非托管语言"中也是如此):局部变量以堆栈帧的形式存储在堆栈中,堆栈帧中还包含过程或函数参数以及返回地址和也许某些机器特定的状态需要在返回时恢复.

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

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