标签:style blog http color sp strong on 文件 问题
都说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/ 老咸出品
标签:style blog http color sp strong on 文件 问题
原文地址:http://www.cnblogs.com/gu-zhan/p/4160606.html