什么是托管代码和非托管代码?

时间:2011-03-15 01:36:56

标签: c# java .net asp.net

我发现有人说托管代码和非托管代码。有什么不同?它只适用于.Net吗?

2 个答案:

答案 0 :(得分:7)

您可以阅读此维基百科文章Managed code。基本上托管代码是Microsoft术语,但这个概念并不新鲜。请考虑以下definition

  

在同一台机器中安装的运行时引擎中执行的应用程序。没有它,应用程序无法运行。运行时环境提供程序使用的通用软件程序库,通常执行内存管理。它还可以提供从源代码到可执行代码或从中间语言到可执行代码的即时(JIT)转换。 Java,Visual Basic和.NET的公共语言运行时(CLR)是运行时引擎的示例。

现在将其与此definition非托管代码进行对比:

  

自行运行的可执行程序。程序从操作系统启动,调用并使用操作系统中的软件例程,但不需要使用其他软件系统。已组装成机器语言的汇编语言程序和编译为特定平台的机器语言的C / C ++程序是非托管代码的示例。

答案 1 :(得分:6)

托管代码是运行时库管理内存分配,解除分配和垃圾收集的地方,您不必担心内存太多。

非托管代码允许指针和直接内存访问,并且应该注意不要导致垃圾或内存冲突(分段错误)