ランタイム中に作成されたTIdHTTP
オブジェクトがあります。IOHandler
およびCompression
プロパティは、実行時にも作成されるオブジェクトに設定されています。私がTIdHTTP
オブジェクトのFree
に電話すると、自動的にIOHandler
とCompression
オブジェクトが割り当てられますか?TIdHTTP.Freeは、割り当てられたCompressorとIOHandlerもクリーンアップしますか?
function CreateHTTP():TIdHTTP;
begin
Result := TIdHTTP.Create(nil);
Result.Compressor := TIdCompressorZLib.Create(Result)
Result.IOHandler := TIdSSLIOHandlerSocketOpenSSL.Create(nil);
end;
、このコードが呼び出されるいくつかの回:
with CreateHTTP() do begin
Data := Get('http://google.com');
Free;
end;
はコンプレッサーとIOHandlerのメモリリークで、この結果は、またはそれらが自動的に破棄されますか?
は、それが自動的に破壊されない念のため、私はこのようなのようDestroy
メソッドのオーバーライドを追加しました:
ありがとうございました。私はFastMMを調べます。私は実際のコードで例外処理を使用しますが、私はすぐに関連性があると思っていた部分にそれをトリミングしました。 –
HTTPS URLにアクセスしている場合を除き、SSLlOHandlerを作成する必要はありません(例ではありません)。あなたがやっていてIndyの最新バージョンを使用しているなら、[SSLIOHandlerを作成する必要はありません](http://indyproject.org/Sockets/Blogs/ChangeLog/20141222.EN.aspx)その設定をカスタマイズする必要がある場合を除きます。 –