c# 托管和非托管

托管和非托管是微软.net framework框架中特有的概念。
.net framework主要包括两部分:
1.CLR(Common Language Runtime)公共语言运行时。
2.BCL(Basic Class Library)基础类库。
CLR提供服务:诸如内存管理,垃圾回收,线程管理等服务;BCL提供实现。

托管代码:
运行在CLR下的代码就是托管代码,诸如C#、VB.NET 写的代码都会先编译成MSIL(MS中间代码),并运行在CLR的子集CLI(Common Language Infrastructure)中,最终根据不同的平台使用JIT(just in Time)编译成机器代码。
与Java机制不同在于Java是经过一次编译和一次解释运行,C#是经过两次编译运行。

非托管代码:
非托管的代码也叫本地代码(native),是由操作系统管理的。
高级语言编写的程序必须经过一定的步骤编译为机器语言才能被机器理解和运行。
在标准的C/C++中,编译过程是这样的:
1.预处理。源代码经过预处理器,对头文件和宏进行解析。
2.编译。经过编译器,生成汇编代码。
3.汇编。经过汇编器,生成机器指令。
4.链接。经过链接,生成可执行程序。
这种编译的特点是直接生成了机器码,可以直接被机器识别和运行,无需任何中间运行环境。缺点是不同平台能够识别的机器码不同,因此可执行程序的跨平台能力差。

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值