托管代码和非托管代码的概念

1、托管代码是Microsoft的中间语言,作用是.NET FRAMEWORK的运行时环境CLR执行代码前去编译源代码,充当翻译的作用;

2、简单的说,就是托管代码被编译成中间语言MSIL后在.NET的Framework下运行,同操作系统底层的交互都交给Framework去做。所谓非托管代码就是脱离了Framework的管制,直接同底层API打交道,自己管理自己的内存和安全机制等东西。而托管代码不管这些,全都有Framework去完成;

3、托管程序是需要通过访问公共语言运行时cls才能访问操作系统的程序,而非托管程序不用通过访问公共语言运行时cls可以直接访问操作系统的程序;如果非托管代码需要进行内存管理等服务,就必须显式地调用操作系统的接口,通常来说,它们会调用Windows SDK所提供的API来实现。就最近的情况来看,非托管程序会通过COM接口来获取操作系统服务。

4、Visual Basic .NET和C#只能产生托管代码;

5、托管数据:由公共语言运行库的垃圾回收器分配和释放的数据。默认情况下,C#、Visual Basic 和 JScript .NET 数据受托管。

时间: 2024-08-04 18:14:34

托管代码和非托管代码的概念的相关文章

【转】托管代码和非托管代码的区别

[转]托管代码和非托管代码的区别 什么是托管代码(managed code)? 托管代码是一microsoft的中间语言(IL),他主要的作用是在.NET   FRAMEWORK的公共语言运行库(CLR)执行代码前去编译源代码,也就是说托管代码充当着翻译的作用,源代码在运行时分为两个阶段:       1.源代码编译为托管代码,(所以源代码可以有很多种,如VB,C#,J#)       2.托管代码编译为microsoft的平台专用语言. 编译器把代码编译成中间语言(IL),而不是能直接在你的电

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

托管代码与非托管代码的区别 1 简单的说,就是代码被编译成MSIL后在.net的Framework下运行,同操作系统底层的交互都交给framework去做. 所谓非托管代码就是脱离了Framework的管制,直接同底层API打交道,自己管理自己的内存和安全机制等东西.而托管代码就不管这些,全都由Framework去完成 2 “程序”一般都是在对操作系统进行直接或者间接的操作 “托管程序”是需要通过访问公共语言运行时(cls)才能访问操作系统的程序 而“非托管程序”不用通过访问公共语言运行时(cl

托管代码和非托管代码

什么是托管代码(managed code)? 托管代码是一microsoft的中间语言(IL),他主要的作用是在.NET   FRAMEWORK的公共语言运行库(CLR)执行代码前去编译源代码,也就是说托管代码充当着翻译的作用,源代码在运行时分为两个阶段:       1.源代码编译为托管代码,(所以源代码可以有很多种,如VB,C#,J#)       2.托管代码编译为microsoft的平台专用语言. 编译器把代码编译成中间语言(IL),而不是能直接在你的电脑上运行的机器码.中间语言被封装在

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

网上找了下相关文字,发现一些很不错的,转过来,方便以后查看 托管代码 托管代码就是Visual Basic .NET和C#编译器编译出来的代码.编译器把代码编译成中间语言(IL),而不是能直接在你的电脑上运行的机器码.中间语言被封装在一个叫程序集(assembly)的文件中,程序集中包含了描述你所创建的类,方法和属性(例如安全需求)的所有元数据.你可以拷贝这个程序集到另一台服务器上部署它.通常来说,这个拷贝的动作就是部署流程中唯一的一个操作. 托管代码在公共语言运行库(CLR)中运行.这个运行库

.net 托管代码与非托管代码

关键是要了解CLR(公共语言运行时) .Net Framework 是由彼此独立又相关的两部分组成:CLR 和 类库, CLR是它为我们提供的服务,类库是它实现的功能. .NET的大部分特性----垃圾收集,版本控制,线程管理等,都使用了CLR提供的服务 当你为.NET Framework编译源代码的时候,得到的目标代码不是CPU能识别的机器指令,而是一种叫做"微软中间语言(MSIL,或简称为IL的代码)"的新语言.CLR提供了一个实时编译器,用来把IL代码编译为本机机器代码.这样一来

C#中的托管代码与非托管代码

官方给出的定义是: 托管代码(Managed Code)就是中间语言(IL)代码,在公共语言运行库(CLR)中运行.编译器把代码编译成中间语言,当方法被调用时,CLR把具体的方法编译成适合本地计算机运行的机器码,并且将编译好的机器码缓存起来,以备下次调用使用.随着程序集的运行,CLR提供各种服务:内存管理,安全管理,线程管理,垃圾回收,类型检查等等. 非托管代码,直接编译成目标计算机码,由操作系统直接执行,代码必须自己提供垃圾回收,类型检查,安全支持等服务.如需要内存管理等服务,必须显示调用操作

.NET托管代码和非托管代码

.net托管代码是运行在.NET FRAMEWORK上的,类似于JAVA虚拟机托管代码:属安全代码,因为不涉及指针,但相对性能上较低,C#写出来的东西就可以认为是托管代码非托管代码:非安全的,可以使用指针,性能较高,C++那是写出来的东西就可以认为是非托管代码,还有比如MFC等等一般地,项目开发用托管代码即可.简单来说:托管代码就是把有关内存管理的操作全都由CLR来管理,也就是把底层的一些操作全都封装起来了(安全性上就相对高点,因为不能直接进行内存读取,不会出现内存溢出之类的问题,但相对的,性能

深入解析Windows操作系统笔记——CH1概念和术语

1.概念和工具 本章主要介绍Windows操作系统的关键概念和术语 1.概念和工具... 1 1.1操作系统版本... 1 1.2基础概念和术语... 2 1.2.1Windows API2 1.2.2 服务.函数和例程... 3 1.2.3 进程.线程和作业... 4 1.2.3.1 进程... 4 1.2.3.2 线程... 4 1.2.3.3 虚拟地址描述符... 4 1.2.3.4 作业... 4 1.2.4 虚拟内存... 5 1.2.5 内核模式和用户模式... 5 1.2.6 终端

【转帖】C# DllImport 系统调用使用详解 托管代码的介绍 EntryPoint的使用

1      DLLImport的使用 using System; using System.Runtime.InteropServices; //命名空间 class Example { //用DllImport 导入Win32的MessageBox函数 [DllImport("user32.dll", CharSet = CharSet.Unicode)] public static extern int MessageBox(IntPtr hWnd, String text, S