托管代码和非托管代码

     托管代码和非托管代码有什么区别呢?从字面上理解,只是一个是被托管的,另一个是没有被托管的。但是,被托管的托管代码是被谁管着呢?让我们先来看看它们的定义。

     托管代码:由公共语言运行库环境(而不是直接由操作系统)执行的代码。托管代码应用程序可以获得公共语言运行库服务,例如自动垃圾回收、运行库类型检查和安全支持等。这些服务帮助提供独立于平台和语言的、统一的托管代码应用程序行为。

     非托管代码:在公共语言运行库环境的外部,由操作系统直接执行的代码。非托管代码必须提供自己的垃圾回收、类型检查、安全支持等服务,它与托管代码不同,后者从公共语言运行库中获得这些服务,而非托管代码是在运行库之外运行的代码。例如COM 组件、ActiveX 接口和 Win32 API 函数都是非托管代码的示例。

     从上面的定义中,有很人可能可以很好的理解。但是也有一些初学者可能看的会一头雾水。所以我就来谈谈我的理解吧。

     在我的理解中,托管代码就是要首先经过一个中间程序进行编译(如微软的CLR),在编译后才能被发送到计算机中进行执行。通过这样的一个中间过程,程序在内存中运行的时候,它所占据的内存空间是固定的,它只能子它所占据的内存空间中运行。其它的程序也不能够对它的内存中的内容进行修改。而非托管代码它所战据的空间不是国定的,而且其它程序也能对它内存中的数据进行修改。

     下面举一个别人讲的例子:比如一个游戏修改器,有经常玩单机游戏的朋友都知道。一个游戏可以用游戏修改器来修改游戏的一些属性。比如:金钱、武器、攻击、生命等等。那么有的修改器(我不知到是不是全部,希望有知道的朋友跟我说一下)就是通过对游戏运行是的内存中的数据进行修改的。而这些可以用这种方法进行修改的游戏很可能就是用非托管代码语言进行编写的(如:C、C++)。而如果编写游戏的代码语言是受托管的(如:C#,那么就不可能用这种方法进行修改。

     下面画一个简单托管代码和非托管代码的执行过程:

      托管代码与非托管代码

从上图能够很明白的看出它们的不同。

托管代码:

  1、运行的效率相对较低(因为多了一步CLR编译),但安全性相对较高。

  2、可以用在对安全性要求较高的地方。例如:企业内部管理系统、大型电商网站。

非托管代码:

  1、运行的效率相对较高,但安全性相对较低。

  2、用在运行效率要求较高的地方。例如:系统软件、底层软件、驱动程序等。

 

因为本人也是新手,难免有很多错误的地方。请别见怪。

转载于:https://www.cnblogs.com/wuyicqb/archive/2012/12/03/2800550.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/274458.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何实现前端新手引导功能?

大家好,我是若川。我持续组织了近一年的源码共读活动,感兴趣的可以 点此扫码加我微信 lxchuan12 参与,每周大家一起学习200行左右的源码,共同进步。同时极力推荐订阅我写的《学习源码整体架构系列》 包含20余篇源码文章。历史面试…

hp-ux锁定用户密码_UX设计101:提出正确的问题-规划和促进用户访谈

hp-ux锁定用户密码这是什么? (What is this?) This session is part of a learning curriculum that I designed to incrementally skill up and empower a team of Designers and Researchers whose skillset and ways of working needed to evolve to keep up wi…

我与掘金合作出了源码共读第一期,首发超400人报名,快来参与~

大家好,我是若川。最近有不少新朋友关注我。对我不是很了解的,或许可以读我的2021年度总结。诚邀各位新老读者朋友参加源码共读活动。同时我和掘金合作,共同出了源码共读第一期,11月25日——12月25日,奖品丰厚。我是前…

mac基本操作技巧_6个基本设计技巧

mac基本操作技巧“In everything you do, refine your skills and knowledge about fundamental concepts and simple cases. Once is never enough. As you revisit fundamentals, you will find new insights. It may appear that returning to basics is a step backward an…

如何突破技术瓶颈(适合P6以下)

大家好,我是若川。我持续组织了近一年的源码共读活动,感兴趣的可以 点此扫码加我微信 lxchuan12 参与,每周大家一起学习200行左右的源码,共同进步。同时极力推荐订阅我写的《学习源码整体架构系列》 包含20余篇源码文章。历史面试…

stack smash_扶手椅VGUX:Super Smash Bros.Ultimate

stack smashEasily far the most exciting news out of Super Smash Bros. Ultimate’s announcement was that every single character would be returning to the game.asily迄今为止最令人兴奋的消息了任天堂明星大乱斗最终宣布的是, 每一个字符会被返回到游戏中…

《Two Dozen Short Lessons in Haskell》学习(十)- Private Definitions — the where-clause

《Two Dozen Short Lessons in Haskell》(Copyright © 1995, 1996, 1997 by Rex Page,有人翻译为Haskell二十四学时教程,该书如果不用于赢利,可以任意发布,但需要保留他们的copyright)这本书是学习 Ha…

我和掘金合作的源码共读小册报名快1000人了~

众所周知,我和掘金合作出了源码共读第一期。我是前端领读员。现在报名快1000人了~奖品丰厚。也有一些小伙伴已经写了好几期笔记了~但相对1000人写的还是太少。什么?你不知道?那也很正常,毕竟我的公众号常读人数比较少。大部分人都…

【短语学习】盈余量分析(earned value analysis)

作者:gnuhpc 出处:http://www.cnblogs.com/gnuhpc/ 各种形式的盈余量分析是衡量执行时最常用的方法。它把范围、成本和进度等度量标准结合在一起以帮助项目管理小组评估项目执行。对每项活动而言,盈余量分析包括计算三个主要数值:…

配音剧本_网络的各个阶段:剧本如何传达更好的UX

配音剧本让我们将焦点放在使用剧本技巧提升显微镜上。 (Let’s put the spotlight on elevating microcopy with playwriting techniques.) “Anything you put in a play — any speech — has got to do one of two things: either define character or push the action of t…

极致编译速度,一文搞定webpack5升级

大家好,我是若川。我持续组织了近一年的源码共读活动,感兴趣的可以 点此扫码加我微信 lxchuan12 参与,每周大家一起学习200行左右的源码,共同进步。同时极力推荐订阅我写的《学习源码整体架构系列》 包含20余篇源码文章。历史面试…

全库模式 用户模式 表模式_暗模式,亮模式和用户的故事

全库模式 用户模式 表模式I have been working on designing a UI for an app that has individuals over the age of 60 as its main audience. At some point, I found my design more appealing in dark mode. As a UX designer, I know that my opinions and preferences d…

Rollup 与 Webpack 的 Tree-shaking

大家好,我是若川。我持续组织了近一年的源码共读活动,感兴趣的可以 点此扫码加我微信 lxchuan12 参与,每周大家一起学习200行左右的源码,共同进步。同时极力推荐订阅我写的《学习源码整体架构系列》 包含20余篇源码文章。历史面试…

聚类与分类的主要区别在于:_经验在于细节:分析流服务的用户体验

聚类与分类的主要区别在于:看不见的差异 (The Invisible Difference) When app markets mature the overlap in features and designs grows closer as they catch up and copy each other. The more similar the apps are to one another, the more important the …

asp.net 动态创建TextBox控件 如何加载状态信息

接着上文Asp.net TextBox的TextChanged事件你真的清楚吗? 这里我们来说说状态数据时如何加载的。虽然在Control中有调用状态转存的方法,但是这里有一个判断条件 if (_controlState > ControlState.ViewStateLoaded) 一般的get请求这里的条件是不满足…

从零实现一个迷你 Webpack

大家好,我是若川。我持续组织了近一年的源码共读活动,感兴趣的可以 点此扫码加我微信 lxchuan12 参与,每周大家一起学习200行左右的源码,共同进步。同时极力推荐订阅我写的《学习源码整体架构系列》 包含20余篇源码文章。历史面试…

ios 刷新遮罩遮罩_在Adobe XD中进行遮罩的3种方法

ios 刷新遮罩遮罩Are you new to Adobe XD? Or maybe you’re just stuck on how to create a simple mask? Here are 3 quick tips for how to mask your photos and designs in Adobe XD.您是Adobe XD的新手吗? 或者,也许您只是停留在如何创建简单的…

Vite 4.0 正式发布!

源码共读我新出了:第40期 | vite 是如何解析用户配置的 .env 的链接:https://www.yuque.com/ruochuan12/notice/p40也可以点击文末阅读原文查看,欢迎学习记笔记~12 月 9 日,Vite 4.0 正式发布。下面就来看看 Vite 4.0 有哪些更新吧…

图像标注技巧_保护互联网上图像的一个简单技巧

图像标注技巧补习 (TUTORIAL) Have you ever worried about sharing your images on the Internet? Anytime you upload something to the web you risk the chance of your work being used (without permission) by another.您是否曾经担心过要在Internet上共享图像&#xf…

【VueConf 2022】尤雨溪:Vue的进化历程

大家好,我是若川。我持续组织了近一年的源码共读活动,感兴趣的可以 点此扫码加我微信 lxchuan12 参与,每周大家一起学习200行左右的源码,共同进步。同时极力推荐订阅我写的《学习源码整体架构系列》 包含20余篇源码文章。历史面试…