私は、ホスト名からIPアドレスをretriveするために右ここにこのコードを持っている:メモリリークGETIPFROMHOST
program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils,
winsock;
function GetIPFromHost(const HostName: string): string;
type
TaPInAddr = array[0..10] of PInAddr;
PaPInAddr = ^TaPInAddr;
var
phe: PHostEnt;
pptr: PaPInAddr;
i: Integer;
begin
Result := '';
phe := GetHostByName(PChar(HostName));
if phe = nil then Exit;
pPtr := PaPInAddr(phe^.h_addr_list);
i := 0;
while pPtr^[i] <> nil do
begin
Result := inet_ntoa(pptr^[i]^);
Inc(i);
end;
end;
var
wsaData: TWSAData;
begin
if (WSAStartup($0202, wsaData) <> 0) then begin
Exit;
end;
while true do begin
sleep (1000);
GetIPFromHost ('localhost');
end;
それが正常に動作し、私のIPアドレスを提供します。 残念ながら、DNSとIPアドレスを比較するには、この機能を数回必要とします。
何らかの理由で大きなメモリリークが発生し、プログラムのメモリが非常に高速に増加します。 どうして私はメモリを解放できますか?
ありがとうございます。
に "のWinsock" を追加
のDelphi XE2およびXE3
に取り組んでいる、それは実際にはメモリリークです、またはいくつかのライブラリでは、プロセスの負荷のですか? –メモリリークです。私はDelphi7を使用しています。ループは、関数が呼び出されるたびにメモリが増加することを示しています。 –
私はdelphiを知らないけど、GetIPFromHostの最後にpheが指すメモリを解放する必要はありませんか? – clime