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

3

我发现有些人说托管代码和非托管代码。它们有什么区别?这只是针对.NET吗?


1
http://en.wikipedia.org/wiki/Managed_code - Matt Davis
1
这个术语是一个.NET术语,但从某种程度上讲,Java,Javascript,Lisp和Smalltalk都是托管代码。 - Thilo
可能是重复问题?:https://dev59.com/B3VD5IYBdhLWcg3wL4mM - rbrayb
2个回答

7
您可以阅读这篇维基百科文章“托管代码(Managed code)”。基本上,托管代码是微软提出的一个术语,但这个概念并不新鲜。请看下面定义的解释:

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

现在对比下这个定义的非托管代码:

一种可以独立运行的可执行程序。从操作系统启动,程序调用和使用操作系统中的软件程序,但不需要另一个软件系统来使用。已经汇编成机器语言的汇编语言程序和为特定平台编译成机器语言的C/C++程序都是非托管代码的例子。


6

托管代码是指运行时库管理您的内存分配、释放和垃圾回收,您不必过多担心内存。

非托管代码允许使用指针和直接内存访问,但要小心不要造成垃圾或内存违规(分段错误)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接