【发布时间】:2017-01-20 19:09:31
【问题描述】:
今天,我在 CodeProject 上阅读了一篇关于内存管理 .NET 的博客。
网址 - Article
上面写着——
退出方法(乐趣):现在执行控制终于开始了 退出方法。当它通过结束控制时,它清除所有 在堆栈上分配的内存变量。换句话说,所有 与 int 数据类型相关的变量在 堆栈中的“后进先出”时尚。
最大的收获——它没有取消分配堆内存。这段记忆 稍后将由垃圾收集器释放。
据我了解,垃圾收集器仅释放堆内存。那么,谁来释放栈内存呢?
请提出建议。
【问题讨论】:
-
默认情况下,被调用者负责清理堆栈(
stdcall调用约定)。 -
Codeproject.com 内容不受任何形式的体面审查。因此有很多废话和错误,包括这句话的第一段。没有什么是“清除”或“释放”的,当方法返回时,局部变量很容易被遗忘。与 .NET Stack 类的工作方式不同。
标签: c# .net memory-management heap-memory stack-memory