C ++ / CLI中的托管对象和非托管对象是什么
答案 0 :(得分:5)
托管对象是.NET框架的一个特性,它是一种类似C ++的语言的实现,并且由.NET垃圾收集器为您管理内存。 C ++本身没有这样的概念,也是一种更好的(通常)管理所有资源(不仅仅是内存)的方法,称为RAII。
答案 1 :(得分:4)
Managed / Unmanaged概念通常不是C ++。这是微软.Net技术的发言。
在普通的纯C ++应用程序中,应用程序本身负责删除它已分配的所有内存。这要求开发人员在何时删除内存时要非常小心。如果内存过早删除,应用程序可能会崩溃,如果它仍然有一个指向它的指针。如果内存被删除太晚或根本没有删除,则应用程序会发生内存泄漏。
Java和.Net等环境通过使用垃圾收集器解决了这个问题。开发人员不应该再删除内存了,垃圾收集器会为他做这件事。
在“原生”.Net语言(如C#)中,整个语言与垃圾收集器概念一起使用。为了简化从普通的普通C ++应用程序到.Net的过渡,Microsoft在其C ++编译器中添加了一些扩展,以便C ++开发人员已经可以从.Net的优势中受益。
无论何时使用普通的纯C ++,Microsoft都会讨论非托管或本机C ++。如果您在C ++中使用.Net扩展,Microsoft会谈论托管C ++。如果您的应用程序包含两者,则您具有混合模式应用程序。
答案 2 :(得分:0)
C ++中不存在托管对象。
它们存在于 Microsoft的.NET扩展到C ++中,完整的解释会有点长,抱歉。