2011-05-03 88 views

回答

4

管理對象和.NET框架的功能及其實現一個C++的 - 如語言,並有自己的記憶對你由.NET垃圾收集管理。 C++本身沒有這樣的概念,並且更好地(通常)管理所有資源(不僅僅是內存),稱爲RAII

0

託管對象在C++中不存在。

它們存在於微軟的.NET擴展到C++,並且完整的解釋會有點長,對不起。

+1

在Visual Studio 2003之後,「擴展」停止支持,支持C++/CLI,這是一種全新的語言。 – 2011-05-03 07:06:53

2

Managed/Unmanaged概念通常不是C++。這是微軟.Net技術發言。

在普通的普通C++應用程序中,應用程序本身負責刪除已分配的所有內存。這要求開發人員非常小心刪除內存的時間。如果內存過早被刪除,應用程序可能會崩潰,如果它仍然有指向它的指針。如果內存被刪除得太晚,或者根本沒有被刪除,應用程序就會發生內存泄漏。

像Java和.Net這樣的環境通過使用垃圾收集器解決了這個問題。開發人員不應該刪除內存,垃圾收集器將爲他做這件事。

在'本地'.Net語言(如C#)中,整個語言與垃圾收集器概念一起工作。爲了使從簡單的普通C++應用程序轉換到.Net更容易,微軟爲其C++編譯器添加了一些擴展,以便C++開發人員可以從.Net的優勢中受益。

無論何時您使用普通的普通C++,Microsoft都會討論非託管或本機C++。如果您在C++中使用.Net擴展,Microsoft會談到託管C++。如果您的應用程序同時包含這兩個應用程序,那麼您有一個混合模式應用

+0

「Managed C++」在Visual Studio 2003中走了渡河之路。它的後續版本「C++/CLI」有很大的不同。 (例如,第一個產生混合模式的二進制文件,而第二個產生僅CIL的組件) – 2011-05-03 07:05:36

相關問題