【发布时间】:2020-10-25 10:00:27
【问题描述】:
据我所知,堆栈和堆的概念在应用于内存时是指用于管理内存的数据结构。
如果这些是语言(即 C#)未强制执行的抽象术语,并且存在未使用此类概念实现内存虚拟化的设备和系统;那么为什么基本上每本书或参考文本都使用这两个术语来解释自动和动态数据分配?这些文本不应该使用更抽象的概念来解释数据分配吗?
【问题讨论】:
-
你读过吗,例如this question on the stack/heap?
-
@Putnam 是的,我有。为什么?
-
"如果这些是语言不强制执行的抽象术语" 在这种情况下,这是错误的假设。 C# standard 明确引用“heap”和“stack”。实际上有一个
stackalloc关键字。 -
@underthevoid 你有运行 C# 的例子吗?假设这样的系统需要模拟预期的堆和堆栈行为以符合标准。
-
CPU栈和堆不是抽象的东西,而是物理的东西。除非我们将堆栈作为一种数据结构来讨论并且那里没有堆,这不是一回事,只有堆栈的概念是共享的。否则,栈和堆和其他事物一样,都是抽象概念……人类大脑通过生产 CPU 和编程语言创造并实现了这些概念。
标签: c# memory-management stack heap-memory