gpt4 book ai didi

delphi - 为什么 Indy 10 会报告内存泄漏?

转载 作者:行者123 更新时间:2023-12-03 15:26:07 25 4
gpt4 key购买 nike

我在 Indy 10.5.7(在 Delphi 7 下)中遇到了这个泄漏。

5 - 12 字节:TIdThreadSafeInteger x 1
21 - 36 字节:TIdCriticalSection x 2

<小时/>

我像这样使用 Indy:

function getWeb(a,b:Integer):Integer;
var url: string;
H: TIdHttp;
SS: TStringStream;
begin
url := 'http://blabla';
H := TIdHttp.Create(nil);
try
SS := TStringStream.Create('');
try
H.Get(url, SS);
Result := StrToInt(SS.DataString);
FINALLY
SS.Free;
END;
finally H.Free;
end;

泄漏本身并不困扰我,因为应用程序正在关闭。这让我的瓜爆炸了,这是我每次关闭应用程序时看到的错误消息。

为什么会出现这种泄漏?

<小时/>

我检查了印地网站,但它几乎没有意义。不管怎样,这个bug看起来无法修复:最新版本的Indy无法用Delphi 7编译。唯一的解决方案可能是Indy 9。更新:看起来网站上所说的 v10.203 实际上是 v10.2.3。

最佳答案

这是 FastMM 内存管理器出现的问题,并且已经存在了一段时间,并且有很多有关修复的信息。我在Delphi 2010中使用的解决方案是:

  1. 对文件 IdGlobal.pas 进行以下更改
  2. 将路径“C:\Program Files\Embarcadero\RAD Studio\7.0\source\Indy\Indy10\System”(不带引号)添加到库中。

变化:

{$IFNDEF DOTNET}
{$IFDEF REGISTER_EXPECTED_MEMORY_LEAK}
function IndyRegisterExpectedMemoryLeak(AAddress: Pointer): Boolean;
{$IFDEF USEINLINE}inline;{$ENDIF}
begin

// ===== My modification begins =====================

Result := FastMM4.RegisterExpectedMemoryLeak(AAddress);
Exit;


// ===== My modification ends =====================

希望这有帮助。

关于delphi - 为什么 Indy 10 会报告内存泄漏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5260680/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com