【问题标题】:Stack and heap in c# [duplicate]c#中的堆栈和堆[重复]
【发布时间】:2011-09-25 18:22:41
【问题描述】:

可能重复:
What and where are the stack and heap

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

【问题讨论】:

    标签: c# heap-memory stack-memory


    【解决方案1】:

    “堆栈”(或更准确地说是调用堆栈)是自动托管的内存(即使在像 C 这样的“非托管语言”中):局部变量存储在堆栈中的堆栈帧中,其中还包含过程或函数参数和返回地址,可能还有一些需要在返回时恢复的特定于机器的状态。

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

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

    【讨论】:

      猜你喜欢
      • 2011-04-13
      • 2013-09-25
      • 2014-05-22
      • 2011-12-01
      • 1970-01-01
      • 2012-09-23
      • 2014-06-23
      • 2018-06-25
      相关资源
      最近更新 更多