如何释放在运行时组件

时间:2016-03-21 11:55:59

标签: c# windows-runtime c++-cx winrt-component

我是否必须从可以返回到托管C#项目的Windows运行时组件中创建的类中释放内存?

这个问题涉及类而不是像How to free memory of c++ WinRT value structs

这样的结构

发生以下情况

  1. C ++ \ Runtime组件方法是从C#项目
  2. 引发的
  3. 创建了C ++类(带有其他c ++类集合的单个类)
  4. 返回C ++类
  5. C#项目使用数据
  6. 我想确保以下类不会造成内存泄漏:https://github.com/cmusphinx/pocketsphinx-wp-demo/blob/master/PocketSphinxRntComp/SpeechRecognizer.h#L32

    我(仍然)新的释放记忆,并且无法知道如何以及何时释放它。任何人吗?

1 个答案:

答案 0 :(得分:1)

所有ref类都是引用计数的,并且在没有更多实时引用时将自动释放。因为.NET使用垃圾收集器,所以内存可能不会立即释放。

如果您的应用程序或库中有循环引用,那么对象的引用计数将永远不会为零,并且内存将不会被回收(如果管理了所有对象,.NET可以处理循环引用,但如果它们是来自托管世界之外,就像你的C ++类一样。)

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