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

How to free memory of c++ WinRT classes created in the runtime component

我是否必须以及如何才能从 Windows 运行时组件中创建的 class 释放内存,该组件已返回到托管 C# 项目?

这个问题涉及 类 而不是像

这样的结构

出现以下情况

  1. C++\Runtime组件方法从C#项目中提出
  2. C++ class 已创建(单个 class 与其他 c++ classes 的集合)
  3. 返回 C++ class
  4. C# 项目使用数据

我想确保以下 classes 不会造成内存泄漏:https://github.com/cmusphinx/pocketsphinx-wp-demo/blob/master/PocketSphinxRntComp/SpeechRecognizer.h#L32

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

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

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

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