none
請問 Managed 型別 及 Unmanaged 資源的定義 ? RRS feed

  • 問題

  • 在 c# 的參考文件中

    對 using 陳述式的說明內  https://msdn.microsoft.com/zh-tw/library/yh598w02.aspx

    有看到一些不懂的名詞, 想請教一下是什麼意思

    File 和 Font 為 Managed 型別的範例,這些型別會存取 Unmanaged 資源

    請問 Managed 型別 及 Unmanaged 資源的定義  ? 

    謝謝

    2016年6月9日 上午 07:52

解答

  • 只要是你使用 .Net Framework 設計出來的型別, 就叫 Managed 型別.

    如果是 CLR 可以控制的資源, 就叫 Managed 資源.

    有一些資源是由系統的 API 或其他的 API 控制的, 例如 Windows Handle, 這類的資源是由 Native Code 程式碼( 比方 C++ Win32 或 MFC 形式的專案, VB6 的專案) 分配的, 就稱為 Unmanaged 資源. 因為 CLR 無法管理這類資源.


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。



    2016年6月9日 上午 10:22
    版主
  • 簡單來說Managed環境指的是:

    1) .NET平台

    2) Windows Runtime和Windows Phone Runtime

    而Unmanaged環境指的就是非上述的三種環境, 也就是Windows平台, 而File 和 Font 等 Managed 型別因為會用到Windows管轄的檔案和字型, 所以稱為[這些型別會存取 Unmanaged 資源]


    • 已編輯 tihsMVP 2016年6月9日 下午 12:05
    • 已標示為解答 MIS110 2016年6月11日 上午 08:01
    2016年6月9日 下午 12:04
  • 變數的記憶體模型,是由 .Net 封裝定義的,稱為 Managed

    非經由 .Net 封裝定義的,稱為 Unmanaged 。

    差異在於 .Net 封裝的變數不會出現惡意程式透過緩衝區溢位攻擊,因為 .Net 變數強制自動檢查,所以溢位時會拋出例外,不允許執行。


    不精確的問法,就會得到隨便猜的答案;自己都不肯花時間好好描述問題,又何必期望網友會認真回答?

    • 已標示為解答 MIS110 2016年6月11日 上午 08:01
    2016年6月9日 下午 03:00

所有回覆

  • Managed Types

    Common Language Runtime (CLR)

    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。


    2016年6月9日 上午 08:02
    版主
  • 感謝您的回覆

    但是我實在看不懂, 我是在 C# 的 USING 看到的

    為何與 C++ 有關 ?

    相關文件只提到 GC and value types , 也沒有明確的定義

    不好意思, 如果方便可以說明一下嗎 ?  謝謝

    2016年6月9日 上午 10:12
  • 只要是你使用 .Net Framework 設計出來的型別, 就叫 Managed 型別.

    如果是 CLR 可以控制的資源, 就叫 Managed 資源.

    有一些資源是由系統的 API 或其他的 API 控制的, 例如 Windows Handle, 這類的資源是由 Native Code 程式碼( 比方 C++ Win32 或 MFC 形式的專案, VB6 的專案) 分配的, 就稱為 Unmanaged 資源. 因為 CLR 無法管理這類資源.


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。



    2016年6月9日 上午 10:22
    版主
  • 簡單來說Managed環境指的是:

    1) .NET平台

    2) Windows Runtime和Windows Phone Runtime

    而Unmanaged環境指的就是非上述的三種環境, 也就是Windows平台, 而File 和 Font 等 Managed 型別因為會用到Windows管轄的檔案和字型, 所以稱為[這些型別會存取 Unmanaged 資源]


    • 已編輯 tihsMVP 2016年6月9日 下午 12:05
    • 已標示為解答 MIS110 2016年6月11日 上午 08:01
    2016年6月9日 下午 12:04
  • 變數的記憶體模型,是由 .Net 封裝定義的,稱為 Managed

    非經由 .Net 封裝定義的,稱為 Unmanaged 。

    差異在於 .Net 封裝的變數不會出現惡意程式透過緩衝區溢位攻擊,因為 .Net 變數強制自動檢查,所以溢位時會拋出例外,不允許執行。


    不精確的問法,就會得到隨便猜的答案;自己都不肯花時間好好描述問題,又何必期望網友會認真回答?

    • 已標示為解答 MIS110 2016年6月11日 上午 08:01
    2016年6月9日 下午 03:00
  • 非常感謝各位從各角度幫我釐清觀念
    2016年6月11日 上午 08:02