托管代码

都说C#是托管代码。为什么是托管的?托管又是什么呢?好处在哪呢?

首先,C#这门语言是基于 .NET Framework框架的,.NET Framework这个框架包括了公共语言运行库与.NET Framework 类库。另外.NET framework里还包含有很多其他的编程语言。所有这些基于.NET framework的语言,调用到的类都是相同的。编译时,可执行文件被编译器编译成IL中间代码[IL中间代码是.NET平台衍生出的一种中间语言],并且执行时需要有.NET framework运行环境。

所以:

1)托管代码:由公共语言运行库环境(而不是直接由操作系统)执行的代码。相对“本地代码”。[公共语言运行库是执行代码的代理,具有一些属于.NET 平台的服务。比如内存管理,线程管理、远程处理、自动垃圾回收、运行库类型检查和安全支持等。]

2)本地代码:如用C/C++开发的程序代码,可执行文件被编译成与CPU指令集相关的的机器码,可以直接运行。

所以说到底,托管代码就是先编译成为IL中间代码,再由公共语言运行库来执行代码。并且提供一些比如自动垃圾回收等等的机制。

本地代码就是直接编译即可运行的程序代码。

那么问题来了,.NET环境中,C++写的程序代码是否属于中间代码?

答案是:如果建立的是CLR工程,即是托管代码。需要先生成IL中间语言。而不是直接生成机器码。确切地说,应该称之为“Managed C++”代码。

所以,托管代码,在大部分情况下,是比较“安全的”,因为它没有野指针,编程时不必太担心内存的泄露问题。并且垃圾回收机制会为程序收回已不用的内存空间。当然某些情况下是不会自动回收的。 

转载请注明 博客园 :http://www.cnblogs.com/gu-zhan/ 老咸出品

posted @ 2014-12-12 22:37  Mertin.Chen  阅读(245)  评论(0编辑  收藏  举报