C ++ / CLI中的托管对象和非托管对象是什么?

时间:2011-05-03 06:36:27

标签: object c++-cli

C ++ / CLI中的托管对象和非托管对象是什么

3 个答案:

答案 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 ++中,完整的解释会有点长,抱歉。