【发布时间】:2016-10-16 14:07:25
【问题描述】:
我有一个在运行时创建的TIdHTTP 对象,它的IOHandler 和Compression 属性设置为也在运行时创建的对象。如果我在我的TIdHTTP 对象上调用Free,这会自动释放分配给它的IOHandler 和Compression 对象吗?
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;
这会导致 Compressor 和 IOHandler 的内存泄漏,还是会自动销毁?
以防它不会被自动销毁,我为Destroy 方法添加了一个覆盖,如下所示:
destructor TIdHTTP.Destroy;
begin
if Assigned(Compressor) then
Compressor.Free;
if Assigned(IOHandler) then
IOHandler.Free;
inherited;
end;
【问题讨论】:
标签: delphi