C#托管代码是什么?非托管代码是什么?
C#托管代碼是什么?
?
托管代碼(Managed Code)實際上就是中間語言(IL)代碼。代碼編寫完畢后進行編譯,此時編譯器把代碼編譯成中間語言(IL),而不是能直接在你的電腦上運行的機器碼。程序集(Assembly)的文件負責封裝中間語言,程序集中包含了描述所創(chuàng)建的方法、類以及屬性的所有元數據。
托管代碼在公共語言運行庫(CLR)中運行。這個運行庫給運行代碼提供了多種服務,通常來說,公共語言運行庫可以加載和驗證程序集,并以此來保證中間語言的正確性。當某些方法被調用時,公共語言運行庫把具體的方法編譯成適合本地計算機運行的機器碼,并且將編譯好的機器碼緩存起來,以備下次調用時使用。這個過程就是即時編譯。?
注意:程序實際上是被“托管”在公共語言運行庫中。隨著程序集的運行,公共語言運行庫會持續(xù)地提供各種服務,例如內存管理、安全管理、線程管理等等。
總結:托管代碼(Managed Code)是由公共語言運行庫(CLR)執(zhí)行的代碼,而不是由操作系統(tǒng)直接執(zhí)行。托管代碼也可以調用CLR的運行庫服務和功能,比如GC、類型檢查、安全支持等等。這些服務和功能提供獨立與開發(fā)語言的、統(tǒng)一的Managed Code應用程序行為。
原文轉至:http://www.cnblogs.com/iamscree/articles/2363096.html
?
C#非托管代碼是什么?
非托管代碼(Unmanaged Code)是指直接編譯成目標計算機的機器碼,這些代碼只能運行在編譯出這些代碼的計算機上,或者是其他相同處理器或者幾乎一樣處理器的計算機上。
?非托管代碼不能享受公共語言運行庫所提供的一些服務,例如內存管理、安全管理等。 如果非托管代碼需要進行內存管理等服務,就必須顯式地調用操作系統(tǒng)的接口,通常非托管代碼調用Windows SDK所提供的API來實現內存管理。 非托管程序也可以通過調用COM接口來獲取操作系統(tǒng)服務。 注意:C#跟Visual Studio平臺的其他編程語言不一樣的是,C#可以創(chuàng)建托管程序與非托管程序。當創(chuàng)建的項目選擇名字以MFC,ATL或者Win32開頭的項目類型,那么這個項目所產生的就是非托管程序。
?總結:非托管代碼(Unmanaged Code)不由CLR公共語言運行庫執(zhí)行,而是由操作系統(tǒng)直接執(zhí)行的代碼。
原文轉至:http://zhidao.baidu.com/link?url=bV1T7hfmsSFUUA1K5VyXN-dpgSW5-1j4tzV5uE9xMg4GLSNRQKs73Ky5UUqg5UX4uyfpkBs0PUeQw9bOFx_ng3aTXzaJYa1fFlATX2Yr9XK
轉載于:https://www.cnblogs.com/makqiq/p/7124513.html
總結
以上是生活随笔為你收集整理的C#托管代码是什么?非托管代码是什么?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【nodejs爬虫】使用async控制并
- 下一篇: 移动端自适应