<分区>
Possible Duplicate:
What and where are the stack and heap
堆和栈在 C# 中是有区别的。刚刚才发现,一直以为栈是内存,堆是硬盘。但现在我不确定它是否正确。如果不是,那么将它们存储在一个地方有什么区别?
<分区>
Possible Duplicate:
What and where are the stack and heap
堆和栈在 C# 中是有区别的。刚刚才发现,一直以为栈是内存,堆是硬盘。但现在我不确定它是否正确。如果不是,那么将它们存储在一个地方有什么区别?
最佳答案
“堆栈”(或更准确地说是调用堆栈)是自动管理的内存(即使在“非托管语言”如 C 中也是如此):局部变量存储在堆栈中的堆栈帧中,堆栈帧还包含过程或函数参数和返回地址和可能需要在返回时恢复的一些特定于机器的状态。
堆内存是 RAM(或更确切地说:虚拟地址空间)的一部分,用于满足动态内存分配(C 中的 malloc
)。
然而,在 C# 中,堆和堆栈的使用是一个实现细节。但实际上,引用类型的对象是堆分配的;值类型数据既可以存储在堆栈上,也可以存储在堆上,具体取决于上下文(例如,如果它是引用类型对象的一部分)。
关于c# - C# 中的栈和堆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6531481/