区别:托管代码与非托管代码
托管代码
托管代码(Managed Code)实际上就是中间语言(IL)代码。
代码编写完毕后进行编译,此时编译器把代码编译成中间语言(IL),而不是能直接在你的电脑上运行的机器码。
程序集(Assembly)的文件负责封装中间语言,程序集中包含了描述所创建的方法、类以及属性的所有元数据。
托管代码在公共语言运行库(CLR)中运行。这个运行库给运行代码提供了多种服务,通常来说,公共语言运行库可以加载和验证程序集,并以此来保证中间语言的正确性。
当某些方法被调用时,公共语言运行库把具体的方法编译成适合本地计算机运行的机器码,并且将编译好的机器码缓存起来,以备下次调用时使用。这个过程就是即时编译。
注意:程序实际上是被“托管”在公共语言运行库中。随着程序集的运行,公共语言运行库会持续地提供各种服务,例如内存管理、安全管理、线程管理等等。
如图:
非托管代码
非托管代码(Unmanaged Code)是指直接编译成目标计算机的机器码,这些代码只能运行在编译出这些代码的计算机上,或者是其他相同处理器或者几乎一样处理器的计算机上。
非托管代码不能享受公共语言运行库所提供的一些服务,例如内存管理、安全管理等。
如果非托管代码需要进行内存管理等服务,就必须显式地调用操作系统的接口,通常非托管代码调用Windows SDK所提供的API来实现内存管理。
非托管程序也可以通过调用COM接口来获取操作系统服务。
注意:C#跟Visual Studio平台的其他编程语言不一样的是,C#可以创建托管程序与非托管程序。当创建的项目选择名字以MFC,ATL或者Win32开头的项目类型,那么这个项目所产生的就是非托管程序。
总结:
非托管代码(Unmanaged Code)不由CLR公共语言运行库执行,而是由操作系统直接执行的代码。
非托管代码必须自己提供垃圾回收,类型检查,安全支持等等服务
区别:托管代码与非托管代码相关推荐
- 托管代码和非托管代码的区别
什么是托管代码? 托管代码是一microsoft的中间语言,他主要的作用是在.NET FRAMEWORK的CLR执行代码前去编译源代码,也就是说托管代码充当着翻译的作用,源代码在运行时分为两个阶段: ...
- .Net 托管代码和非托管代码的区别
1.什么是托管代码(managed code)? 托管代码是一microsoft的中间语言(IL),他主要的作用是在.NET FRAMEWORK的公共语言运行库(CLR)执行代码前去编译源代码,也就是 ...
- 托管代码和非托管代码的介绍,以及在这区别下的混合调试方法
什么是托管代码(managed code)? 托管代码是一microsoft的中间语言(IL),他主要的作用是在.NET FRAMEWORK的公共语言运行库(CLR)执行代码前去编译源代码,也就是说托 ...
- 托管代码与非托管代码
什么是托管代码? 托管代码是一microsoft的中间语言,他主要的作用是在.NET FRAMEWORK的CLR执行代码前去编译源代码,也就是说托管代码充当着翻译的作用,源代码在运行时分为两个阶段 ...
- 托管代码和非托管代码
一.什么是"托管代码"? 1.1.托管代码 托管代码是使用可在 .NET 上运行的一种高级语言(例如 C#.Visual Basic.F# 等)编写的. 使用相应的编译器编 ...
- C#基础知识之托管代码和非托管代码
什么是托管代码(managed code) 托管代码(Managed Code)就是中间语言(IL)代码,在公共语言运行库(CLR)中运行.编译器把代码编译成中间语言,当方法被调用时,CLR把具体的方 ...
- 托管代码与非托管代码之间与托管程序
自.Net问世以后,我们习惯的VC++,VB编程模式有了很大的变换,托管与非托管的概念也不断映入程序员们的眼帘,可以说.NET正逐步成为编程的主流语言和平台之一.今天不与大家讨论谁主沉浮,也不发表慷慨 ...
- [转]托管代码与非托管代码
什么是托管代码(managed code)? 托管代码是一microsoft的中间语言(IL),他主要的作用是在.NET FRAMEWORK的公共语言运行库(CLR)执行代码前去编译源代码,也就是 ...
- C# CLRInsideOut 托管代码与非托管代码互操作,产生相关调用代码的好工具 C++ 头文件转C# 的好工具...
CLRInsideOut 托管代码与非托管代码互操作,产生相关调用代码的好工具 C++ 头文件转C# 的好工具 http://download.csdn.net/source/2914818 转载于 ...
- 托管代码与非托管代码之间的交互
基础知识:如下所示: 1.在运行时控制下执行的代码叫做托管代码:在运行时之外执行的代码叫做非托管代码. 2.可以使用vs提供的dumpbin工具来获取动态链接库中提供的所有函数.如:dumpbin / ...
最新文章
- python基础教程书籍推荐-python入门书籍推荐
- Android异步消息处理机制完全解析,带你从源码的角度彻底理解
- PostgreSQL的 array_to_string 功能
- Nginx 301跳转踩坑总结
- 计算机领域的范式,编程领域的范式转移
- PHP设计模式(6)迭代器模式
- OC语言Block 续
- brainfuck 在线_酒店在线声誉持久战 重视社媒舆论 保持品牌一致性
- 准确度判断 语义分割_【语义分割】DeepLab v1/v2
- qt撤销与回退_Git撤销某次分支的合并Merge
- 单元测试框架unittest
- centos 配置subversion svn
- Elastic Job 入门
- GridView里面的Item高度设置
- java和Js中的类型转换_graalvm js 与java 类型转换的一些方法
- 计算机组装专周实训心得,电脑组装实训心得3篇
- Task08|文本数据|joyfulpandas
- 阿里云国际版短信发送
- Windows下的IIS日志管理
- 真·电子二胡 (ESP32配合库乐队APP实现的电子制作)