AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

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

SetDelimitedText Memory Leak ?

  Alt 9. Mär 2020, 11:18
Delphi-Quellcode:
var
  FileName: string;
  SplitPath: TstringList;
begin
  SplitPath := TStringList.Create;
  SplitPath.StrictDelimiter:= true;
  SplitPath.Delimiter := '\';

  try
    SplitPath.DelimitedText := ExtractFilePath(FileName);

    SplitPath.DelimitedText := ''; // bringt nichts
    SplitPath.Clear; // auch nichts
  finally
    FreeAndNil(SplitPath);
  end;
end;

SetDelimitedText ist der letzte Aufruf (Memory Leak)

Es wird alles freigegeben trotzdem habe ich hier Speicherlecks.
  Mit Zitat antworten Zitat
DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#2

AW: SetDelimitedText Memory Leak ?

  Alt 9. Mär 2020, 11:33
Wenn ich deinen Code kopiere und statt dem ExtractFilePath(FileName) einen festen String nehme, habe ich keinen Leak.
Außerdem wird FileName nicht gesetzt.
  Mit Zitat antworten Zitat
venice2
(Gast)

n/a Beiträge
 
#3

AW: SetDelimitedText Memory Leak ?

  Alt 9. Mär 2020, 11:41
Außerdem wird FileName nicht gesetzt.
Getippt und zur Demonstration nicht nötig.
Denke jeder weis was gemeint ist.

Mir meldet Eurekalog in dieser Zeile 30 Memory Leaks
SplitPath.DelimitedText := ExtractFilePath(Files[IntI - 1]); Files ist ein array of String.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.316 Beiträge
 
Delphi 12 Athens
 
#4

AW: SetDelimitedText Memory Leak ?

  Alt 9. Mär 2020, 12:34
Wo steht der Code?
Doch nicht etwa in einer Consolenanwendung in der DPR.
Wenn ja, dann verschieb das ganze mal in eine Prozedur.

Und welche Delphi-Verison?
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
venice2
(Gast)

n/a Beiträge
 
#5

AW: SetDelimitedText Memory Leak ?

  Alt 9. Mär 2020, 12:36
Wo steht der Code?
Doch nicht etwa in einer Consolenanwendung in der DPR.
Wenn ja, dann verschieb das ganze mal in eine Prozedur.

Und welche Delphi-Verison?
Nein normale Procedure.
Delphi 10.3.3 64 Bit.

Gebe ich einen normalen String ein so wie die @DieDolly habe ich das problem auch nicht.
Das ist aber nicht die Voraussetzung so wie in meinem Beispiel.

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

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

AW: SetDelimitedText Memory Leak ?

  Alt 9. Mär 2020, 14:15
Ich vermute mal der entscheidende Teil deines Codes fehlt in deinem Beispiel. Was machst du mit dem Files Array? Gibst du das sauber frei?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.316 Beiträge
 
Delphi 12 Athens
 
#7

AW: SetDelimitedText Memory Leak ?

  Alt 9. Mär 2020, 16:30
Schade, das wäre eine einfache Erklärung gewesen, da globale Variablen in der DPR erst entladen werden, nachdem der Speichermanager aufgeröumt wurde.

Gebe ich einen normalen String ein so wie die @DieDolly habe ich das problem auch nicht.
"normale" String-Konstanten liegen nicht im Speichermanager. (die werden dierect aus dem Code verlinkt, mit ReferenceCounter = -1)


TStringList nutzt intern ein dynamisches Array mit den Strings der Zeilen,
da hätte ein Fehler schon lange auffallen müssen,
und im Setter des DelimitedText sollten die temporären Strings für das Zerlegen eigentlich auch automatisch aufgeräumt werden.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu ( 9. Mär 2020 um 16:32 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


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 20:25 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