![]() |
MemoryLeak im SOA Client
Hallo,
wenn ich eine WSDL Datei importieren lasse (Delphi XE) entsteht hierbei folgender Quellcode:
Delphi-Quellcode:
Ein Aufruf dieser Funktion zieht unter anderem den Aufruf der Delphi-Funktion TWSDLLookup.Create nach sich.
function GetUserService(UseWSDL: Boolean; Addr: string; HTTPRIO: THTTPRIO): UserService;
const defWSDL = 'http://172.20.40.132/userservice?wsdl'; defURL = 'http://172.20.40.132/userservice'; defSvc = 'UserServiceService'; defPrt = 'UserServicePort'; var RIO: THTTPRIO; begin Result := nil; if (Addr = '') then begin if UseWSDL then Addr := defWSDL else Addr := defURL; end; if HTTPRIO = nil then RIO := THTTPRIO.Create(nil) else RIO := HTTPRIO; try Result := (RIO as UserService); if UseWSDL then begin RIO.WSDLLocation := Addr; RIO.Service := defSvc; RIO.Port := defPrt; end else RIO.URL := Addr; finally if (Result = nil) and (HTTPRIO = nil) then RIO.Free; end; end;
Delphi-Quellcode:
Die Variable "FLookup" wird an keinem Ort von Delphi mehr freigegeben. Im Destroy-Part der Klasse steht:
constructor TWSDLLookup.Create;
begin FLookup := TDictionary<string, Variant>.Create; end;
Delphi-Quellcode:
FastMM sagt mir, dass diese Variable nicht mehr freigeben wird. Wenn ich die Unit direkt ändere, wird die Änderung nicht in mein Programm übernommen.
destructor TWSDLLookup.Destroy;
begin ClearWSDLLookup; inherited; end; procedure TWSDLLookup.ClearWSDLLookup; begin FLookup.Clear; end; Wie kann ich weiter vorgehen? Viele Grüße, Martin |
AW: MemoryLeak im SOA Client
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:54 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz