.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托管代码和非托管代码的更多相关文章

  1. C#基础知识之托管代码和非托管代码

    什么是托管代码(managed code)? 托管代码(Managed Code)就是中间语言(IL)代码,在公共语言运行库(CLR)中运行.编译器把代码编译成中间语言,当方法被调用时,CLR把具体的 ...

  2. .net组件和com组件&托管代码和非托管代码

    com组件和.net组件: COM组件是非托管对象,可以不需要.NET框架而直接运行,.NET框架组件是托管对象,必须有.NET框架的支撑才能运行. COM组件有独立的类型库文件,而.NET组件是通过 ...

  3. .Net Framework 之 托管代码和非托管代码的区别

    一.什么是托管代码(managed code)? 托管代码:是微软的中间语言(IL),即微软中间语言MSIL(Microsoft Interspace Language). “ 源代码→机器码 ”运行 ...

  4. Git使用总结 Asp.net生命周期与Http协议 托管代码与非托管代码的区别 通过IEnumerable接口遍历数据 依赖注入与控制反转 C#多线程——优先级 AutoFac容器初步 C#特性详解 C#特性详解 WPF 可触摸移动的ScrollViewer控件 .NET(C#)能开发出什么样的APP?盘点那些通过Smobiler开发的移动应用

    一,原理 首先,我们要明白Git是什么,它是一个管理工具或软件,用来管理什么的呢?当然是在软件开发过程中管理软件或者文件的不同版本的工具,一些作家也可以用这个管理自己创作的文本文件,由Linus开发的 ...

  5. C#托管代码、非托管代码及回收机制

    网上找了下相关文字,发现一些很不错的,转过来,方便以后查看 托管代码 托管代码就是Visual Basic .NET和C#编译器编译出来的代码.编译器把代码编译成中间语言(IL),而不是能直接在你的电 ...

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

    托管代码与非托管代码的区别 1 简单的说,就是代码被编译成MSIL后在.net的Framework下运行,同操作系统底层的交互都交给framework去做. 所谓非托管代码就是脱离了Framework ...

  7. 【笔试&面试】C#的托管代码与非托管代码

    1. C#中的托管代码是什么? 答:托管代码(ManagedCode)实际上就是中间语言(IL)代码.代码编写完毕后进行编译,此时编译器把代码编译成中间语言(IL),而不是能直接在你的电脑上运行的机器 ...

  8. c#的托管代码和非托管代码的理解

    理解托管和非托管代码的前提之下,要先了解CLR(公共语言运行库) .Net Framework 是由彼此独立又相关的两部分组成:CLR 和 类库, CLR是它为我们提供的服务,类库是它实现的功能. . ...

  9. MarshalAs属性指示如何在托管代码和非托管代码之间封送数据。

    http://blog.csdn.net/tianyu0910/article/details/6260755 http://blog.sina.com.cn/s/blog_4e4ee8ed0100e ...

随机推荐

  1. 绕过kernel模块版本校验检测

    kernel module version check bypass . 举例说明 . 内核是怎么实现的 . 怎样去突破 . 总结 . 举例说明 Linux内核版本很多,升级很快,2个小内核版本中内核 ...

  2. ORACLE查看锁(lock)情况

      SELECT /*+ RULE */         ls.osuser os_user_name,          ls.username user_name,          DECODE ...

  3. STL 优先队列

    STL 栈,队列,优先队列用法 分类: Learning C++2013-11-15 00:52 843人阅读 评论(2) 收藏 举报 c++栈队列优先队列STL STL 中栈的使用方法(stack) ...

  4. hdu4323Magic Number(dp)

    http://acm.hdu.edu.cn/showproblem.php?pid=4323 去年的多校 编辑距离的变形 暴力居然过了 还想了好久别的方法,想得很头疼 #include <ios ...

  5. 数据库 一致性读&&当前读

    今天小伙伴问了一个sql的问题: update t set status=2 where id in(select id from t where status=1) 这个sql,在并发的情况下,会不 ...

  6. BZOJ_1026_[SCOI2009]_windy数_(数位dp)

    描述 http://www.lydsy.com/JudgeOnline/problem.php?id=1026 windy定义了一种windy数.不含前导零且相邻两个数字之差至少为2的正整数被称为wi ...

  7. uc浏览器qq浏览器广告过滤

  8. AlarmManager用法

    源http://blog.csdn.net/wangxingwu_314/article/details/8060312

  9. Scheme Implementations对比

    MIT Scheme http://www.gnu.org/software/mit-scheme/ GNU Guile http://www.gnu.org/software/guile/ Rack ...

  10. Oracle 12c创建用户时出现“ORA-65096: invalid common user or role name”的错误

    这篇文章主要介绍CDB和PDB的基本管理,资料来源oracle官方. 基本概念: Multitenant Environment:多租户环境 CDB(Container Database):数据库容器 ...