什麼是非託管對象?你可以用CLR來解釋一下嗎?我在互聯網上了解到,他們說非託管對象不能在CLR環境下運行。你能給我一個非託管對象的例子嗎?什麼是非託管對象?
回答
任何未由CLR內存管理(即垃圾回收器)管理的內存都是非託管內存。
OS文件句柄是非託管內存的一個示例(在.NET和Windows下)。
要妥善處置非託管資源 ,建議您 實現公共的Dispose或執行該對象的必要 清理代碼關閉 方法。 IDisposable接口爲實現接口的資源類 提供 Dispose方法。由於 它是公開的,因此您的 應用程序的用戶可以直接調用Dispose 方法來釋放由非託管資源使用的內存。當您正確執行 實施Dispose方法時, Finalize方法成爲 在 未調用Dispose方法的情況下清理資源的安全措施。
簡單地說,非託管的對象是不是由.NET框架管理的對象。
最好的例子是數據庫連接或文件操作最終由操作系統處理,並且需要明確解放(File.Close()或Connection close)並且不會由垃圾收集器自動處理。
IT意味着非託管資源arre存儲在堆棧中..我也混淆了堆棧和堆..我瞭解到,對象存儲在堆和GC照顧堆中未使用的對象並清理 – NoviceToDotNet 2010-10-31 06:29:18
這不是堆和堆棧問題。這意味着,這不是.net框架(和本例中的GC)處理其從記憶中解放的責任。 – Zied 2010-10-31 06:40:49
I learned on the internet that they say unmanaged objects don't run under the CLR environment.
這是不對的,在CLR是非常能夠什麼可以做到的範圍內C.一切在C#中你有一個叫不安全keywoard,它允許您訪問甚至指針和指針發生偏移。我有一個項目,我使用遊戲引擎進行繁重的Interop工作,而C封裝非常小,因爲我可以處理CLR/C#中的所有內存對象。
通過不是運行它們可能希望明確清楚未虛擬化的對象不是由虛擬機處理的:您必須執行清理或創建包裝類來爲您清理。
您的應用程序或網站日常使用的VC++ 6.0示例或許多activeX和COM對象是非託管的,例如Excel VBA是非託管的,並且有太多其他示例。
- 1. 什麼是C++/CLI中的託管對象和非託管對象?
- 2. Unity遊戲對象是託管還是非託管資源?
- 3. CDI與非託管對象
- 4. 非託管對象的GC.AddMemoryPressure
- 5. 什麼是託管代碼和非託管代碼?
- 6. .NET中「託管」與「非託管」資源的含義是什麼?
- 7. 什麼是託管資源和非託管資源?
- 8. 什麼是「託管」和「非託管」可用性集?
- 9. 什麼是「託管/非託管類型組合無效」。意思?
- 10. 傳遞非託管的指針非託管對象在託管類C++/CLI
- 11. 什麼是un/managed DLL?什麼是非託管代碼?
- 12. 通Bitmap對象以非託管代碼
- 13. 銷燬C中的非託管對象#
- 14. Monotouch:垃圾回收器,託管和非託管對象
- 15. 在非託管中使用託管類對象
- 16. 如何在非託管對象中獲得託管bean?
- 17. 追蹤通過託管DirectX分配的非託管DirectX對象
- 18. 非託管內存分配到託管對象
- 19. 具有非託管屬性的託管對象是否有錯誤?
- 20. 託管和非託管DLL之間有什麼區別
- 21. 什麼是網格託管
- 22. 什麼是託管原型?
- 23. 什麼是ActiveX託管?
- 24. 什麼是託管和非託管環境意味着在休眠?
- 25. 高效地調用非託管方法將非託管對象作爲託管代碼的參數
- 26. C#非託管對象的大小是多少?
- 27. 託管vs非託管
- 28. DirectX託管或非託管?
- 29. 此DLL是管理還是非託管?
- 30. 從非託管DLL導入函數時0x8007007F是什麼意思?
「我在互聯網上學到了」 – 2010-10-31 07:05:37
很差的英語.... :)對不起 – NoviceToDotNet 2010-11-01 04:37:20