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

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

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

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

现在将此与非托管代码的定义进行对比:

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

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

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