Net Framework 中托管代码与非托管代码的区别

Posted 流星小子

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Net Framework 中托管代码与非托管代码的区别相关的知识,希望对你有一定的参考价值。

托管代码与非托管代码的区别

1 简单的说,就是代码被编译成MSIL后在.net的Framework下运行,同操作系统底层的交互都交给framework去做。
所谓非托管代码就是脱离了Framework的管制,直接同底层API打交道,自己管理自己的内存和安全机制等东西。而托管代码就不管这些,全都由Framework去完成
2 “程序”一般都是在对操作系统进行直接或者间接的操作

“托管程序”是需要通过访问公共语言运行时(cls)才能访问操作系统的程序  

而“非托管程序”不用通过访问公共语言运行时(cls)可以直接访问操作系统的程序  
3 vb.net,C#等写的程序是托管程序,VC++写托管程序,如果用到了内存管理,则只能编译为非托管程序这些东西MSDN上都写得很清楚的

4、托管代码是一种中间语言,运行在CLR上; 非托管代码被编译为机器码,运行在机器上。

5、托管代码独立于平台和语言,能更好的实现不同语言平台之间的兼容; 非托管代码依赖于平台和语言。

6、托管代码可享受CLR提供的服务(如安全检测、垃圾回收等),不需要自己完成这些操作;

     非托管代码需要自己提供安全检测、垃圾回收等操作。

以上是关于Net Framework 中托管代码与非托管代码的区别的主要内容,如果未能解决你的问题,请参考以下文章

托管代码与非托管代码的区别(转)

C#代码在.NET Framework提供的环境下运行,允许直接操作内存吗

c# 托管与非托管

.NET学习:中间语言(IL)=托管代码?

是否可以使用与非托管源不同的编译器标志来编译托管源?

托管资源与非托管资源的定义