AGB  ·  Datenschutz  ·  Impressum  







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

Variants / Strings / Memory Leaks

Ein Thema von Gruber_Hans_12345 · begonnen am 26. Apr 2005 · letzter Beitrag vom 19. Okt 2005
 
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.441 Beiträge
 
Delphi 2007 Professional
 
#1

Variants / Strings / Memory Leaks

  Alt 26. Apr 2005, 21:59
Hallo,
Nutze Delphi 6.0 mit RAInterpreter (frühe Form vom JVCL Interpreter), die allerdings schon stark abgeändert wurde, und deshalb kann ich auch nicht auf JVCL Interpreter umsteigen (das mal vorweg)

Ich habe nun bemerkt, das ich eine Reihe von Memory Leaks bekomme (habe mir mal die Trial von AQtime runtergeldane)

Es sieht so aus, als ob die Speicherleaks vom Delphi internen Stringhandling herkommen. (zumindest kommt es definitiv nicht von einem GetMem, einer TClass.Create oder sonstiges sondern vielleicht von einem vergessenen variant String? (falls es soetwas gibt))

Leak #1
Delphi-Quellcode:
[ParseToken] TokenStr1 := Parser.Token; // TokenStr1 ist string
[Token] SetString(Result, F, P-F); // F und P sind PChar, Result ist string
[LStrFromPChar]
[NewAnsiString]
das in den Eckigen Klammern sind die Funktionen (von LStrFromPChar und NewAnsiString kennt er nicht die unit, wird wohl system.pas sein)


und das 2. Leak ist bei
Delphi-Quellcode:
[ParseToken] Token1 := Copy(TokenStr1, 2, Length(TokenStr1) - 2); // Token1 .. variant, TokenStr1 .. string
[LstrCopy]
[LStrFromPCharLen]
[NewAnsiString]
Ich habe mir mal die Variants Funktionen angeschaut, und was der Compiler beim kopieren von strings macht, man sieht eigentlich nur das wenn ein Variant String in einen anderen Variant kopiert wird, der Dest zuerst auf null gesetzt wird, und dann die Pointer kopiert werden.
Daher müsste eigentlich Delphi irgendwo mitführen wieviele Instancen von einem Variant String vorhanden sind und dann bei Bedarf den String freigeben (nachdem die letzte Instanz auch auf null gesetzt wird) Oder ?

Hat jemand genauere Info's, damit ich weiß, wo ich suchen (und debuggen und memproofen) kann.
Gruss Hans

2B or not 2B, that is FF
  Mit Zitat antworten Zitat
 


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 21:41 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