.NET 中託管程式碼和非託管程式碼的區別
.NET Framework 具有 CLR(公共語言執行時),它執行用 .NET 語言編寫的程式碼。CLR 管理記憶體需求、安全問題、程式碼最佳化、平臺特定轉換等。對於非託管程式碼,不存在 CLR,程式碼由作業系統直接執行。
以下是託管程式碼和非託管程式碼之間的一些重要區別。
| 序號 | 關鍵點 | 託管程式碼 | 非託管程式碼 |
|---|---|---|---|
| 1 | 執行方式 | 由 CLR(公共語言執行時),也稱為託管執行時環境執行。 | 由作業系統直接在底層硬體上執行。 |
| 2 | 安全性 | CLR 處理安全問題併為用 .NET 編寫的程式碼提供內建安全性。 | 沒有內建安全性。編寫安全可靠的程式碼是開發人員的責任。 |
| 3 | 記憶體溢位 | 由於 CLR 自動處理記憶體分配和釋放,因此不會發生記憶體緩衝區溢位。 | 可能發生記憶體緩衝區溢位,並嚴重影響程式執行。 |
| 4 | 執行時服務 | CLR 為託管程式碼提供自動垃圾回收和異常處理。 | 不為非託管程式碼提供自動垃圾回收和其他服務。 |
| 5 | 輸出 | 託管程式碼轉換為 IL(中間語言),也稱為 MSIL 或 CIL。 | 非託管程式碼轉換為本地語言程式碼。 |
| 6 | 低階訪問 | 程式設計師無法使用託管程式碼進行低階訪問。 | 程式設計師可以使用非託管程式碼編寫低階訪問程式碼。 |
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP