我用ics,indy获取网页源码时,发现内存泄漏,100分,请指教。(100分)

  • 主题发起人 主题发起人 study2003
  • 开始时间 开始时间
请问有没有人用底层写过?
 
这个不太难,我以前就写过,不过我是用wininet写的,速度还不错,/
你说有内存泄露估计是你没有控制好内存的分配问题.
 
我用tclientsocket写过的
 
无忌兄,firstrose,可否帮忙一下,
我也用wininet写过,不过好像不行,
请问可否发个源码给我。感激不尽。

我写的wininet如下:
function GetWebPage(const Url: string):Ansistring;
const BufferSize = 1024;
var
hHttpSession, hReqUrl: HInternet;
Buffer: PChar;
NumRead, Index : DWord ;
Next : Boolean;
Content : Ansistring;
begin
NumRead := 0;
hHttpSession := InternetOpen ('MyHttp',INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
try
if hHttpSession <> nil then begin
hReqUrl := InternetOpenURL (hHttpSession, PChar(Url), nil, 0,0,0);
try
if hReqUrl <> nil then begin
Next := True ;
Content :='' ;
GetMem(Buffer,BufferSize);
Try
While Next do
begin
ZeroMemory(Buffer,BufferSize);
InternetReadFile (hReqUrl, Buffer, Sizeof(Buffer), NumRead);
if NumRead > 0 then
Content := Content + StrPas(Buffer)
else
Next := False;
end;

finally
FreeMem(Buffer,BufferSize);
end;
end;
finally
InternetCloseHandle(hReqUrl);
end;
end else begin
// Do Nothing
end;
finally
InternetCloseHandle (hHttpSession);
end;

Result:=Content;
end;
 
给我email地址啊。不用怕,我不会把你的地址卖给垃圾邮件商的[:D]
 
pb90@21cn.com
谢谢咯
 
Indy组件专门留下了一个内存漏洞,因为如果没有这个内存漏洞就会发生错误。代码如下:
idcomponent.pas
initialization
GStackCriticalSection := TCriticalSection.Create;
finalization
// Dont Free. If shutdown is from another Init section, it can cause GPF when stack
// tries to access it. App will kill it off anyways, so just let it leak
// FreeAndNil(GStackCriticalSection);
end.
 
我现在用ics,还是有泄漏
 
不是已经给你发了用tclientsocket的?
 
后退
顶部