托管代碼和非托管代碼

???? 托管代碼和非托管代碼有什么區別呢?從字面上理解,只是一個是被托管的,另一個是沒有被托管的。但是,被托管的托管代碼是被誰管著呢?讓我們先來看看它們的定義。

???? 托管代碼:由公共語言運行庫環境(而不是直接由操作系統)執行的代碼。托管代碼應用程序可以獲得公共語言運行庫服務,例如自動垃圾回收、運行庫類型檢查和安全支持等。這些服務幫助提供獨立于平臺和語言的、統一的托管代碼應用程序行為。

???? 非托管代碼:在公共語言運行庫環境的外部,由操作系統直接執行的代碼。非托管代碼必須提供自己的垃圾回收、類型檢查、安全支持等服務,它與托管代碼不同,后者從公共語言運行庫中獲得這些服務,而非托管代碼是在運行庫之外運行的代碼。例如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.pswp.cn/news/274458.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/274458.shtml
英文地址,請注明出處:http://en.pswp.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日,獎品豐厚。我是前…

ASP.NET repeater添加序號列的方法

ASP.NET repeater添加序號列的方法 1、<itemtemplate> <tr><td> <%# Container.ItemIndex 1%> </td></tr> </itemtemplate> 2、<itemtemplate> <tr><td> <%# this.rpResult.Items.Count 1%> </td>&…

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以下)

大家好&#xff0c;我是若川。我持續組織了近一年的源碼共讀活動&#xff0c;感興趣的可以 點此掃碼加我微信 lxchuan12 參與&#xff0c;每周大家一起學習200行左右的源碼&#xff0c;共同進步。同時極力推薦訂閱我寫的《學習源碼整體架構系列》 包含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迄今為止最令人興奮的消息了任天堂明星大亂斗最終宣布的是&#xff0c; 每一個字符會被返回到游戲中…

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

《Two Dozen Short Lessons in Haskell》&#xff08;Copyright © 1995, 1996, 1997 by Rex Page&#xff0c;有人翻譯為Haskell二十四學時教程&#xff0c;該書如果不用于贏利&#xff0c;可以任意發布&#xff0c;但需要保留他們的copyright&#xff09;這本書是學習 Ha…

我和掘金合作的源碼共讀小冊報名快1000人了~

眾所周知&#xff0c;我和掘金合作出了源碼共讀第一期。我是前端領讀員。現在報名快1000人了~獎品豐厚。也有一些小伙伴已經寫了好幾期筆記了~但相對1000人寫的還是太少。什么&#xff1f;你不知道&#xff1f;那也很正常&#xff0c;畢竟我的公眾號常讀人數比較少。大部分人都…

【短語學習】盈余量分析(earned value analysis)

作者&#xff1a;gnuhpc 出處&#xff1a;http://www.cnblogs.com/gnuhpc/ 各種形式的盈余量分析是衡量執行時最常用的方法。它把范圍、成本和進度等度量標準結合在一起以幫助項目管理小組評估項目執行。對每項活動而言&#xff0c;盈余量分析包括計算三個主要數值&#xff1a;…

配音劇本_網絡的各個階段:劇本如何傳達更好的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升級

大家好&#xff0c;我是若川。我持續組織了近一年的源碼共讀活動&#xff0c;感興趣的可以 點此掃碼加我微信 lxchuan12 參與&#xff0c;每周大家一起學習200行左右的源碼&#xff0c;共同進步。同時極力推薦訂閱我寫的《學習源碼整體架構系列》 包含20余篇源碼文章。歷史面試…

Java學習筆記(7)——輸入輸出

1、File 不同的操作系統對于檔案系統路徑的設定各有差別&#xff0c;例如在Windows中&#xff0c;一個路徑的表示法可能是&#xff1a; "c:\\Windows\\Fonts\\" 而在Linux下的路徑設定可能是&#xff1a; "/home/justin/" Windows的路徑指定是使用UNC&…

全庫模式 用戶模式 表模式_暗模式,亮模式和用戶的故事

全庫模式 用戶模式 表模式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

大家好&#xff0c;我是若川。我持續組織了近一年的源碼共讀活動&#xff0c;感興趣的可以 點此掃碼加我微信 lxchuan12 參與&#xff0c;每周大家一起學習200行左右的源碼&#xff0c;共同進步。同時極力推薦訂閱我寫的《學習源碼整體架構系列》 包含20余篇源碼文章。歷史面試…

聚類與分類的主要區別在于:_經驗在于細節:分析流服務的用戶體驗

聚類與分類的主要區別在于&#xff1a;看不見的差異 (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事件你真的清楚嗎&#xff1f; 這里我們來說說狀態數據時如何加載的。雖然在Control中有調用狀態轉存的方法&#xff0c;但是這里有一個判斷條件 if (_controlState > ControlState.ViewStateLoaded) 一般的get請求這里的條件是不滿足…

從零實現一個迷你 Webpack

大家好&#xff0c;我是若川。我持續組織了近一年的源碼共讀活動&#xff0c;感興趣的可以 點此掃碼加我微信 lxchuan12 參與&#xff0c;每周大家一起學習200行左右的源碼&#xff0c;共同進步。同時極力推薦訂閱我寫的《學習源碼整體架構系列》 包含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的新手嗎&#xff1f; 或者&#xff0c;也許您只是停留在如何創建簡單的…

C#除法運算

C#中進行算術運算容易牽扯到類型的自動轉換&#xff0c;這種自動轉換稱之為隱式轉換&#xff0c;當然還可以人為的強制轉換 隱式轉換要求&#xff1a;不丟失精度&#xff0c;而且轉換前后都為數值 強制轉換&#xff1a;容易丟失可能會丟失精度 1 namespace 除法運算2 {3 cl…