![]() |
StringToOleStr verursacht Memory Leak
Für alle die öfters mal StringToOleStr verwenden sollten:
Merkt euch den zurückgegebene Pointer, denn dieser muss wieder mittels SysFreeString freigegeben werden. Dies ist nicht in der Hilfe vermerkt (D6). Auch kann man SysFreeString nicht in der Delphi-Hilfe finden da es ein direkter Win32-API-Call ist (was StringToOleStr nicht ist). |
Re: StringToOleStr verursacht Memory Leak
Hallo Bernhard,
danke für diese Info - gilt übrigens auch für D7. SysFreeString() wird in Unit ActiveX importiert. Grüße vom marabu |
Re: StringToOleStr verursacht Memory Leak
Man kann es auch so direkt einbinden:
Delphi-Quellcode:
Ich habe diese Verhalten auch bei SetString festgestellt. Und dieses wird durch die beliebte Explode Funktion aufgerufen. Deshalb verwende ich Explode jetzt z.B. immer so:
procedure SysFreeString(const S: WideString); stdcall;
external oleaut name 'SysFreeString';
Delphi-Quellcode:
Mir lief nämlich irgendwann der Speicher bei einer Kundenanwendung, die pausenlos läuft zu.
aParts := Explode('/', sName);
for iName := 0 to length(aParts) -1 do begin ... SysFreeString(aParts[iName]); end; |
Re: StringToOleStr verursacht Memory Leak
Welche Explode-Variante benutzt du denn?
|
Re: StringToOleStr verursacht Memory Leak
Diese
![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:27 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 by Thomas Breitkreuz