1 に答える
WinSCP .NET アセンブリSession
クラスには、Dispose
メソッドがあります。おそらくC++/CLIによって隠されていますが。Dispose
を使用して間接的に呼び出しますdelete
。マネージ C++でIDisposable を破棄する方法とC# オブジェクトでの C++/CLI 削除の呼び出しを参照してください。
通常、そうしない場合でも、古いセッションへの参照を保持しないため、ガベージ コレクターが (予測できない瞬間に) 代わりにこれを行います。しかし、マシンがメモリ不足になることは絶対にありません。
一方、Dispose
(the delete
) を呼び出して未使用のセッションを閉じる必要があります。そうしないと、サーバーへの許可された接続が不足する可能性があります (またはサーバーのリソースを使い果たすことさえあります)。
セッションがいつ破棄されるかを確認するには、 を設定し、Session.DebugLogPath
次のようなエントリのログを検索します。
[2014-04-23 08:08:50.756Z] [000a] Session.Dispose entering
プログラムが終了したときにメモリリークの可能性があるかどうかというあなたの質問は無関係です。プロセスによって割り当てられたメモリは、プロセスの終了時にオペレーティング システムによって解放されます。プログラム自体にどんなリーク/バグ/何かがあっても。プログラムの終了時にヒープは解放されますか?も参照してください。とにかく、あなたのコードはメモリをリークしないと思います。