tengo este código aquí retrive la dirección IP de un nombre de host:pérdida de memoria 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;
que trabaja muy bien y me da la dirección IP. Lamentablemente, necesito esta función un par de veces para comparar un DNS con una dirección IP.
Por alguna razón, recibo una gran pérdida de memoria y la memoria de mi programa aumenta muy rápido. ¿Por qué es eso y cómo puedo liberar la memoria?
Gracias de antemano.
¿Es realmente una pérdida de memoria, o es su carga de proceso en algunas bibliotecas? –
es una pérdida de memoria. Estoy usando Delphi7. el bucle solo representa que cada vez que se llama a la función, la memoria aumenta. –
No sé delphi pero ¿no necesitas liberar memoria apuntada por phe al final de GetIPFromHost? – clime