Delphi XE を使用しています。Delphi Soap を使用してメモリ リークの問題に遭遇しました。QC 91160TWSDLLookup.Destroy
で説明されているように、 の .Free コールの欠落が原因であることが判明しました。
私が抱えている問題は、説明されている回避策でありFLookup.Free
、TWSDLLookup.Destroy
メソッドに追加するだけです。
Delphi ソースを変更したくないので、Tom の回答で説明されているように、ユニットをプロジェクト フォルダにコピーし、変更を加えて再コンパイルしてみました。この手法の問題点は、すべての依存ユニットも再コンパイルした場合にのみ機能するように見えることです。プロジェクト ディレクトリにコピーしようとしたところWSDLLookup.pas
、Stackoverflow エラーが発生しました。私は Web サービス / SOAP に詳しくないので、この手法を使用する場合に他のどのユニットをコピーすればよいかわかりません。
同じページのRob Kennedyの回答では、コードフックを含む別の手法について説明していますが、オブジェクトメソッドには適用されないようです。私は彼が提案したとおりに実行し、TNT Unicode コントロールのフリー コードをダウンロードして、関連する手順を見つけましたが、オブジェクトのメソッドをフックする方法に関する情報を見つけることができませんでした (実際に可能である場合)。これができれば、呼び出しをフックTWSDLLookup.Destroy
して追加しFLookup.Free
ます。
これを修正する方法についてのアイデアは大歓迎です。私は少し初心者のプログラマーなので、明らかな何かを見逃していることを願っていますか?