C# c语言中的堆栈和堆#

C# c语言中的堆栈和堆#,c#,stack,heap,C#,Stack,Heap,可能重复: 堆和堆栈之间的C#存在差异。我刚刚意识到,我一直认为堆栈是RAM,而堆是硬盘。但现在我不确定它是否正确。如果不是,那么如果它们存储在一个地方有什么区别呢?“堆栈”(或者更准确地说是调用堆栈)是自动管理的内存(即使在“非托管语言”如C中也是如此):局部变量存储在堆栈框架中的堆栈上,堆栈框架还包含过程或函数参数、返回地址以及可能需要在返回时恢复的某些特定于机器的状态 堆内存是RAM(或者更确切地说:虚拟地址空间)的一部分,用于满足动态内存分配(C中的malloc) 然而,在C#中,堆和

可能重复:

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

“堆栈”(或者更准确地说是调用堆栈)是自动管理的内存(即使在“非托管语言”如C中也是如此):局部变量存储在堆栈框架中的堆栈上,堆栈框架还包含过程或函数参数、返回地址以及可能需要在返回时恢复的某些特定于机器的状态

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

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