Вот этот код для извлечения 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-адресом.
По какой-то причине у меня большая утечка памяти, и объем памяти моей программы увеличивается очень быстро. Почему это так и как освободить память?
Заранее спасибо.