.NET MemoryStream でのメモリ リーク
質問:
で MemoryStream を使用する場合。 NET、メモリを妨げるために手動で閉じる必要がありますか?リーク?
コード例:
MemoryStream foo() { MemoryStream ms = new MemoryStream(); // write stuff to ms return ms; } void bar() { MemoryStream ms2 = foo(); // do stuff with ms2 return; }
答え:
いいえ、手動で閉じる必要はありません。この特定のコード例では MemoryStream です。 MemoryStream は、foo() メソッドの終了時にスコープ外に出ると自動的に破棄されます。
説明:
MemoryStream クラスは IDisposable インターフェイスを実装します。これは、管理されていないリソースを解放するための Dispose() メソッドを提供します。ただし、現在の実装では、MemoryStream はアンマネージ リソースを割り当てません。 Dispose() を呼び出しても、MemoryStream によって使用されるメモリはこれ以上早くクリーンアップされません。
管理されていないリソースが適切に解放されるようにするため、一般に、破棄可能なオブジェクトに対して Dispose() を呼び出すことをお勧めします。ただし、MemoryStream の場合、この特定のコード例では必ずしも必要ありません。
ただし、次の場合は Dispose() を呼び出すことをお勧めします。
以上がリークを避けるために、.NET の MemoryStream を手動で閉じる必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。