我在C#代碼中使用了特定的命令,效果很好。但是,據說在“非托管”代碼中行為不當。什么是托管或非托管代碼?
3 回答

眼眸繁星
TA貢獻1873條經驗 獲得超9個贊
當您想到非托管時,請考慮機器專用的機器級代碼。類似于x86匯編語言。非托管(本機)代碼經過編譯和鏈接,可直接在其設計用于的處理器上運行,此刻不包括所有操作系統內容。它不是便攜式的,但速度很快。非常簡單,精簡的代碼。
托管代碼包括從Java到舊的Interpretive BASIC的所有內容,或在.NET下運行的所有內容。通常將托管代碼編譯為中間級別的P代碼或字節代碼指令集。盡管它們看起來類似于匯編語言,但它們不是特定于機器的指令。托管代碼將程序與運行它的計算機隔離開來,并創建一個安全邊界,在該邊界中間接分配所有內存,通常來說,您無法直接訪問機器資源,例如端口,內存地址空間,堆棧等。這個想法是在更安全的環境中運行。
要從托管變量轉換為非托管變量,您必須先到達實際對象本身。它可能被包裹或裝在其他包裝中。在32位計算機上,非托管變量(例如“ int”)僅占用4個字節。沒有開銷或其他包裝。從托管代碼變為非托管代碼,然后再返回的過程稱為“ 封送處理 ”。它允許您的程序越過邊界。
- 3 回答
- 0 關注
- 311 瀏覽
添加回答
舉報
0/150
提交
取消