.NET托管代码和非托管代码
.net托管代码是运行在.NET FRAMEWORK上的,类似于JAVA虚拟机
托管代码:属安全代码,因为不涉及指针,但相对性能上较低,C#写出来的东西就可以认为是托管代码
非托管代码:非安全的,可以使用指针,性能较高,C++那是写出来的东西就可以认为是非托管代码,还有比如MFC等等
一般地,项目开发用托管代码即可。
简单来说:
托管代码就是把有关内存管理的操作全都由CLR来管理,也就是把底层的一些操作全都封装起来了(安全性上就相对高点,因为不能直接进行内存读取,不会出现内存溢出之类的问题,但相对的,性能会有损失,使用起来也会不够灵活);
非托管代码,可以直接进行硬件操作,性能比较好;
比较直观的例子就是:C#使用垃圾回收,而C++需要手动释放
-------------------------------------------
CLI的定义:Common Language Infrastructure公共语言基础结构
C#生成的不是处理器能直接解释的指令,而是一种中间语言指令,即CIL:Common Intermediate Language,第二个编译步骤通常在执行时发生,在这个过程中,CIL被转换成处理器能理解的机内码,但要想执行,仅仅转换为机内码还是不行的,C#程序还需要在一个代理的上下文中执行,负责管理C#程序执行的这个代理就是虚拟执行系统Virtual Execution System,VES,又称为“运行时”,运行时负责加载和运行程序,并在程序执行时提供额外的服务(比如安全、垃圾回收等)。
也就是说“运行时”:runtime它不是指一个时间,而是特指“虚拟执行系统”这个代理,负责管理C#程序的执行
.NET托管代码和非托管代码的更多相关文章
- C#基础知识之托管代码和非托管代码
什么是托管代码(managed code)? 托管代码(Managed Code)就是中间语言(IL)代码,在公共语言运行库(CLR)中运行.编译器把代码编译成中间语言,当方法被调用时,CLR把具体的 ...
- .net组件和com组件&托管代码和非托管代码
com组件和.net组件: COM组件是非托管对象,可以不需要.NET框架而直接运行,.NET框架组件是托管对象,必须有.NET框架的支撑才能运行. COM组件有独立的类型库文件,而.NET组件是通过 ...
- .Net Framework 之 托管代码和非托管代码的区别
一.什么是托管代码(managed code)? 托管代码:是微软的中间语言(IL),即微软中间语言MSIL(Microsoft Interspace Language). “ 源代码→机器码 ”运行 ...
- Git使用总结 Asp.net生命周期与Http协议 托管代码与非托管代码的区别 通过IEnumerable接口遍历数据 依赖注入与控制反转 C#多线程——优先级 AutoFac容器初步 C#特性详解 C#特性详解 WPF 可触摸移动的ScrollViewer控件 .NET(C#)能开发出什么样的APP?盘点那些通过Smobiler开发的移动应用
一,原理 首先,我们要明白Git是什么,它是一个管理工具或软件,用来管理什么的呢?当然是在软件开发过程中管理软件或者文件的不同版本的工具,一些作家也可以用这个管理自己创作的文本文件,由Linus开发的 ...
- C#托管代码、非托管代码及回收机制
网上找了下相关文字,发现一些很不错的,转过来,方便以后查看 托管代码 托管代码就是Visual Basic .NET和C#编译器编译出来的代码.编译器把代码编译成中间语言(IL),而不是能直接在你的电 ...
- Net Framework 中托管代码与非托管代码的区别
托管代码与非托管代码的区别 1 简单的说,就是代码被编译成MSIL后在.net的Framework下运行,同操作系统底层的交互都交给framework去做. 所谓非托管代码就是脱离了Framework ...
- 【笔试&面试】C#的托管代码与非托管代码
1. C#中的托管代码是什么? 答:托管代码(ManagedCode)实际上就是中间语言(IL)代码.代码编写完毕后进行编译,此时编译器把代码编译成中间语言(IL),而不是能直接在你的电脑上运行的机器 ...
- c#的托管代码和非托管代码的理解
理解托管和非托管代码的前提之下,要先了解CLR(公共语言运行库) .Net Framework 是由彼此独立又相关的两部分组成:CLR 和 类库, CLR是它为我们提供的服务,类库是它实现的功能. . ...
- MarshalAs属性指示如何在托管代码和非托管代码之间封送数据。
http://blog.csdn.net/tianyu0910/article/details/6260755 http://blog.sina.com.cn/s/blog_4e4ee8ed0100e ...
随机推荐
- hdu 4286
splay 练手用: 杭电的oj要手动开栈: #include<cstdio> #pragma comment(linker, "/STACK:102400000,1024000 ...
- 想使用 MongoDB ,你应该了解这8个方面!
应用性能高低依赖于数据库性能,MongoDB 是一个基于分布式文件存储的数据库.由 C++ 语言编写,旨在为 WEB 应用提供可扩展的高性能数据存储解决方案.MongoDB 是一个介于关系数据库和非关 ...
- linux 性能分析常规逻辑和手段总结
一. 追查cpu占用较高的进程(线程) 1 . 如何查找出当前系统中占用cpu或者内存最高的进程? ps aux |sort -rn -k 3 |head -n3 查找出当前系统中cpu资源占用前三 ...
- 【无聊放个模板系列】POJ2752 EXKMP
#include<cstdio> #include<cstdlib> #include<cstring> #include<iostream> #inc ...
- SQLite入门与分析(八)---存储模型(3)
写在前面:接上一节,本节主要讨论索引页面格式,以及索引与查询优化的关系. (1)索引页面格式sqlite> select * from sqlite_master;table|episodes| ...
- LINUX下安装PHP(CGI模式)和NGINX[转]
安装所需依赖 yum -y install gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freety ...
- Android EditText的常用技巧
1. 设定 EditText 的滚动条.对齐方式.行数.和提示 (hint) 及其颜色 在布局文件,比如 main.xml 中,增加 < EditText android:id = ...
- 【HDOJ】2295 Radar
DLX+二分. /* 2295 */ #include <iostream> #include <string> #include <map> #include & ...
- 【POJ】3076 Sudoku
DLX第一题,模板留念. /* 3076 */ #include <iostream> #include <string> #include <map> #incl ...
- App运营者必须知道的30款数据分析工具
如今的移动应用早已不再是某种结构单一.功能简单的工具了.当我们的移动应用变得越来越庞杂,我们便会需要借用分析工具,来跟踪和分析App内的每一个部分.幸运的是,目前市面上有许多数据分析工具可供App开发 ...