2016-03-21 6 views
1

管理対象C#プロジェクトに返されたWindowsランタイムコンポーネントで作成されたクラスからメモリを解放する必要がありますか?ランタイムコンポーネントで作成されたC++ WinRTクラスのメモリを解放する方法

この質問への懸念クラスの代わりに、次のシナリオが

  1. C++ \ランタイムコンポーネントメソッドを持つ単一のクラス(C++クラスが作成されたC#プロジェクト
  2. から上げを発生How to free memory of c++ WinRT value structs

    のような構造体他のC++クラスのコレクション)

  3. C++クラスが返されます
  4. C#プロジェクトはデータで作業します

は、私は以下のクラスは、文句を言わないメモリリークを作成することを確認したい:https://github.com/cmusphinx/pocketsphinx-wp-demo/blob/master/PocketSphinxRntComp/SpeechRecognizer.h#L32

私は(まだ)メモリを解放して新たなんだと、これを解放する方法と時期の手掛かりを持っていません。誰でも?

+0

それは自動的です、手伝ってはいけません。 –

答えて

1

すべてrefクラスは参照カウントされ、ライブ参照がなくなると自動的に解放されます。 .NETはガベージコレクタを使用するため、メモリはすぐに解放されない可能性があります。

アプリケーションまたはライブラリに循環参照がある場合、オブジェクトの参照カウントはゼロにならず、メモリは再利用されません(.NETはすべてのオブジェクトが管理されていれば循環参照を処理できますが、あなたのC++クラスのように管理された世界の外から来ています)。

C++コードに内部メモリリークがあるかどうかは別の質問です。

+0

@ peter-torr-msftあなたの答えは、私が使っている 'ref'クラスに関する良い情報です。 GCは私にとっては新しいものではありませんが、C++で作成されたオブジェクトに関する情報は見つかりませんでした。もう一度ありがとう! –

関連する問題