首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >托管堆和非托管堆

托管堆和非托管堆
EN

Stack Overflow用户
提问于 2011-07-08 16:11:10
回答 3查看 6.9K关注 0票数 6

什么是非托管堆?

我认为CLR管理的任何基于对象的内存都是托管堆,那么为什么我们要谈论非托管堆呢?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-07-08 16:12:40

假设您使用P/Invoke调用一个Win32函数,该函数使用malloc分配一些内存。垃圾收集器无法看到该内存-它是非托管的。

当然,这可能是你听说过这个术语的背景,也可能不是--如果你能给我们举一些例子,我们可能会给你更多帮助。

票数 11
EN

Stack Overflow用户

发布于 2011-07-08 16:19:15

根据John Skeet的说法- managed堆是.net将为您管理的堆,所有标准对象都是在其上创建的,您通常不需要过多操心它,因为它是托管的。

unmanaged意味着您个人分配内存,因此您个人负责释放它,自己管理它,并跟踪正在使用的内存。

所以,是的,对象内存(在正常的对象创建和销毁的意义上,从对象派生的东西)是受管理的。这是你需要担心的另一个东西--非对象和为它们分配的内存。

票数 5
EN

Stack Overflow用户

发布于 2016-02-17 14:39:38

为了理解.net中的非托管堆,我们需要了解托管堆是什么。

在.net框架中,我们有垃圾收集器,它是由公共语言routine.During初始化的,它的初始化垃圾收集器分配一段内存来存储和管理由托管代码实例化的对象,.This内存被称为托管堆,而不是操作系统中的本机堆。

非托管堆是由非托管代码/本机代码在运行时用于分配内存的堆。time.This堆不受垃圾收集器的控制,需要由开发人员处理以释放分配的内存。Difference between "managed" and "unmanaged"

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6621716

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档