Утечка памяти GETIPFROMHOST

Вот этот код для извлечения IP-адреса из имени хоста:

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-адресом.

По какой-то причине у меня большая утечка памяти, и объем памяти моей программы увеличивается очень быстро. Почему это так и как освободить память?

Заранее спасибо.

7
задан kludg 29 January 2012 в 06:43
поделиться