Einzelnen Beitrag anzeigen

Perlsau
(Gast)

n/a Beiträge
 
#16

AW: FRITZ!Box Komponente v0.17

  Alt 9. Mär 2015, 14:41
Hallo Garfield,

ich teste gerade deine Komponente mit XE7 und muß feststellen, daß dabei ein paar Löcher im Speicher zurückbleiben:

An unexpected memory leak has occurred. The unexpected small block leaks are:
85 - 92 bytes: TStringList x 8

Meine Recherche ergab, daß fReceived daran schuld ist: Diese Stringliste wird in Zeile 2406 erzeugt, aber nicht wieder freigegeben:
Delphi-Quellcode:
constructor THTTPRequest.create;
{*******************************************************************************
*  -1- Klasse erstellen.
}

begin
  inherited;
  fContent := '';
  fReceived := TStringList.Create;
  fPort := 80;
  fHTTPSend.Method := 'GET';
  fHTTPSend.FileURL := '';
  fHTTPSend.Hostname := '';
  fHTTPSend.Accept := '*/*';
  fHTTPSend.ContentType := 'text/html, text/xml';
  fHTTPSend.ContentLength := 0;
  fHTTPSend.Soap.Namespace := '';
  fHTTPSend.Soap.Request := '';
  FillChar(fHTTPRcvd, SizeOf(fHTTPRcvd), 0);
end;

Durch Einfügen einer Zeile in die Destroy-Methode der Klasse THTTPRequest konnte der Fehler behoben werden:
Delphi-Quellcode:
{$IfDef DELPHI}
destructor THTTPRequest.destroy;
{*******************************************************************************
*  -1- Klasse freigeben.
}

begin
  if Assigned(fReceived) Then fReceived.Free; // meine Ergänzung
  inherited;
end;
{$EndIf}
  Mit Zitat antworten Zitat