.NET 中託管程式碼和非託管程式碼的區別


.NET Framework 具有 CLR(公共語言執行時),它執行用 .NET 語言編寫的程式碼。CLR 管理記憶體需求、安全問題、程式碼最佳化、平臺特定轉換等。對於非託管程式碼,不存在 CLR,程式碼由作業系統直接執行。

以下是託管程式碼和非託管程式碼之間的一些重要區別。

序號關鍵點託管程式碼非託管程式碼
1執行方式由 CLR(公共語言執行時),也稱為託管執行時環境執行。由作業系統直接在底層硬體上執行。
2安全性CLR 處理安全問題併為用 .NET 編寫的程式碼提供內建安全性。沒有內建安全性。編寫安全可靠的程式碼是開發人員的責任。
3記憶體溢位由於 CLR 自動處理記憶體分配和釋放,因此不會發生記憶體緩衝區溢位。可能發生記憶體緩衝區溢位,並嚴重影響程式執行。
4執行時服務CLR 為託管程式碼提供自動垃圾回收和異常處理。不為非託管程式碼提供自動垃圾回收和其他服務。
5輸出託管程式碼轉換為 IL(中間語言),也稱為 MSIL 或 CIL。非託管程式碼轉換為本地語言程式碼。
6低階訪問程式設計師無法使用託管程式碼進行低階訪問。程式設計師可以使用非託管程式碼編寫低階訪問程式碼。

更新於:2020年1月6日

3K+ 瀏覽量

開啟您的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.