C#与.NET程序员面试宝典 2.1.7 面试题7:C#中的非托管代码是什么
非托管代码是.NET框架中比较重要的一个基础概念,也是面试中的常规问题,本小节将向读者解释非托管代码的基本概念。
【出现频率】★★★★★
【关键考点】
非托管代码(Unmanaged Code)
非托管代码的特点
【考题分析】
非托管代码(Unmanaged Code)是指直接编译成目标计算机的机器码,这些代码只能运行在编译出这些代码的计算机上,或者是其他相同处理器或者几乎一样处理器的计算机上。非托管代码不能享受公共语言运行库所提供的一些服务,例如内存管理、安全管理等。
如果非托管代码需要进行内存管理等服务,就必须显式地调用操作系统的接口,通常非托管代码调用Windows SDK所提供的API来实现内存管理。非托管程序也可以通过调用COM接口来获取操作系统服务。
注意:C#跟Visual Studio平台的其他编程语言不一样的是,C#可以创建托管程序与非托管程序。当创建的项目选择名字以MFC,ATL或者Win32开头的项目类型,那么这个项目所产生的就是非托管程序。
【答案】
非托管代码(Unmanaged Code)不由CLR公共语言运行库执行,而是由操作系统直接执行的代码。非托管代码必须自己提供垃圾回收,类型检查,安全支持等等服务。