AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

SetDelimitedText Memory Leak ?

Ein Thema von venice2 · begonnen am 9. Mär 2020 · letzter Beitrag vom 10. Mär 2020
Antwort Antwort
venice2
(Gast)

n/a Beiträge
 
#1

AW: SetDelimitedText Memory Leak ?

  Alt 9. Mär 2020, 13:19
Ich vermute mal der entscheidende Teil deines Codes fehlt in deinem Beispiel. Was machst du mit dem Files Array? Gibst du das sauber frei?
SetLength(Files, 0); // keine Auswirkung
Es wird auf den Copy befehl verzweigt.
Auch wenn ich den String selber splite.

Result[spCount - 1] := Copy(sTemp, 1, spPos - 1); // der leak soll hier entstehen
Das ist der letzte Aufruf in System
function _UStrCopy(const S: UnicodeString; Index, Count: Integer): UnicodeString;

Geändert von venice2 ( 9. Mär 2020 um 13:25 Uhr)
  Mit Zitat antworten Zitat
Rolf Frei

Registriert seit: 19. Jun 2006
655 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: SetDelimitedText Memory Leak ?

  Alt 9. Mär 2020, 13:34
Am Ende Files := nil oder Finalize(Files) nutzen. Damit sollte der String-Speicher freigegben werden, wenn ich mich hier nicht komplett irre.

Lies dir mal das dazu durch: https://www.drbob42.com/delphi4/dynarray.htm
  Mit Zitat antworten Zitat
venice2
(Gast)

n/a Beiträge
 
#3

AW: SetDelimitedText Memory Leak ?

  Alt 9. Mär 2020, 13:42
Am Ende Files := nil oder Finalize(Files) nutzen. Damit sollte der String-Speicher freigegben werden, wenn ich mich hier nicht komplett irre.

Lies dir mal das dazu durch: https://www.drbob42.com/delphi4/dynarray.htm
Wenn ich das Array mit SetLength(Files, 0); auf 0 setze dann ist es NIL.
Beide Tips nutzen nichts. Danke, haben kein Auswirkung
  Mit Zitat antworten Zitat
Rolf Frei

Registriert seit: 19. Jun 2006
655 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: SetDelimitedText Memory Leak ?

  Alt 9. Mär 2020, 13:56
Wenn ich dein Beispiel nehme und selber noch eine Files-Array erstelle (Array of String), bekomme ich keine Memoryleaks. Also muss irgendwas im Beispiel noch fehlen, das wir nicht wissen.

Mein Testcode ohne Memoryleaks. Wenn ich Testeshalber das FreeAndNil rausnehme, habe ich wie erwartet ein Memoryleak.
Delphi-Quellcode:
Im DPR: ReportMemoryLeaksOnShutdown := True;

procedure TForm1.FormCreate(Sender: TObject);
var
  FileName: string;
  SplitPath: TstringList;
  s: Array of String;
begin
  SetLength(s, 2);
  s[0] := 'c:\asfdsdf\sdf';
  s[1] := 'c:\asfds2df\s2df';

  SplitPath := TStringList.Create;
  try
    SplitPath.StrictDelimiter:= true;
    SplitPath.Delimiter := '\';

    SplitPath.DelimitedText := ExtractFilePath(s[0]);

    SplitPath.DelimitedText := ''; // bringt nichts
    SplitPath.Clear; // auch nichts
  finally
    FreeAndNil(SplitPath);
  end;
end;
  Mit Zitat antworten Zitat
venice2
(Gast)

n/a Beiträge
 
#5

AW: SetDelimitedText Memory Leak ?

  Alt 9. Mär 2020, 13:58
Wenn ich dein Beispiel nehme und selber noch eine Files-Array erstelle (Array of String), bekomme ich keine Memoryleaks. Also muss irgendwas im Beispiel noch fehlen, das wir nicht wissen.

Mein Testcode ohne Memoryleaks. Wenn ich Testeshalber das FreeAndNil rausnehme, habe ich wie erwartet ein Memoryleak.
Delphi-Quellcode:
Im DPR: ReportMemoryLeaksOnShutdown := True;

procedure TForm1.FormCreate(Sender: TObject);
var
  FileName: string;
  SplitPath: TstringList;
  s: Array of String;
begin
  SetLength(s, 2);
  s[0] := 'c:\asfdsdf\sdf';
  s[1] := 'c:\asfds2df\s2df';

  SplitPath := TStringList.Create;
  try
    SplitPath.StrictDelimiter:= true;
    SplitPath.Delimiter := '\';

    SplitPath.DelimitedText := ExtractFilePath(s[0]);

    SplitPath.DelimitedText := ''; // bringt nichts
    SplitPath.Clear; // auch nichts
  finally
    FreeAndNil(SplitPath);
  end;
end;
So hatte ich es ja auch aber ich habe leaks warum auch immer.
  Mit Zitat antworten Zitat
Benutzerbild von Moombas
Moombas

Registriert seit: 22. Mär 2017
Ort: bei Flensburg
525 Beiträge
 
FreePascal / Lazarus
 
#6

AW: SetDelimitedText Memory Leak ?

  Alt 9. Mär 2020, 14:26
Dann poste doch mal deinen kompletten code, dann kann man dir sicherlich besser helfen.
Der Weg ist das Ziel aber man sollte auf dem Weg niemals das Ziel aus den Augen verlieren.
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:52 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