C# 如何释放c+的内存+;在运行时组件中创建的WinRT类

C# 如何释放c+的内存+;在运行时组件中创建的WinRT类,c#,windows-runtime,c++-cx,winrt-component,C#,Windows Runtime,C++ Cx,Winrt Component,我是否必须并且如何才能从已返回到托管C#项目的Windows运行时组件中创建的类中释放内存 这个问题涉及类,而不是像这样的结构 出现以下情况 C++\Runtime组件方法是从C#项目中提出的 C++类被创建(一个包含其他C++类的集合的类) 返回C++类 C#项目使用数据 我想确保以下类不会造成内存泄漏: 我(仍然)对释放内存是新手,不知道如何以及何时释放内存。有人吗?所有ref类都是引用计数的,当没有更多的活动引用时,它们将自动被释放。由于.NET使用垃圾收集器,内存可能无法立即释放 如果

我是否必须并且如何才能从已返回到托管C#项目的Windows运行时组件中创建的类中释放内存

这个问题涉及类,而不是像这样的结构

出现以下情况

  • C++\Runtime组件方法是从C#项目中提出的
  • C++类被创建(一个包含其他C++类的集合的类)
  • 返回C++类
  • C#项目使用数据
  • 我想确保以下类不会造成内存泄漏:


    我(仍然)对释放内存是新手,不知道如何以及何时释放内存。有人吗?

    所有
    ref
    类都是引用计数的,当没有更多的活动引用时,它们将自动被释放。由于.NET使用垃圾收集器,内存可能无法立即释放

    如果在应用程序或库中有循环引用,那么对象的引用计数永远不会达到零,内存将不会被回收(.NET可以处理循环引用,如果所有对象都被管理,但如果它们来自托管世界之外,而不是像C++类),则


    <>你的C++代码是否有内存泄漏是另一个问题。

    它是自动的,停止尝试帮助。@彼得-托尔- MSFT感谢你的回答,我正在使用的“ReF”类的好信息。GC对我来说并不新鲜,但是我找不到关于C++中创建的对象的任何信息。再次感谢!