Einzelnen Beitrag anzeigen

BAMatze

Registriert seit: 18. Aug 2008
Ort: Berlin
759 Beiträge
 
Turbo Delphi für Win32
 
#1

Anfängerfrage zu FastMM 4Speicherlecks in einer Zeile

  Alt 24. Jul 2009, 15:09
Hallo nochmal an alle DP´ler,

noch eine Frage in Ergänzung zu den Posts heute morgen. Versuche gerade die Speicherlecks in meinem Programm mit der Empfehlung zur Verwendung von FastMM zu beseitigen. Jetzt stoße ich hierbei allerdings auf gewisse Widrigkeiten, wo ich mal gern wüsste, wie ich damit umgehen soll.

Ich verwende folgende 2 Funktionen, die ich auch hier in der DP gefunden habe:

Delphi-Quellcode:
function TFestplattenArbeit.DriveExists(DriveByte: Byte): Boolean;
begin
  Result := GetLogicalDrives and (1 shl DriveByte) <> 0; // Diese Zeile auskommentiert verringert die Anzahl der Speicherlecks um 4 Einträge.
end;

procedure TFestplattenArbeit.simpleDriveSearch(var LaufwerkList: TStringList);
var Index: Integer;
begin
  Index := 0;
// Die ursprüngliche "For Index := 0 to 25 do"-Schleife wurde abgeändert, da hier auch mehrer Speicherlecks "anscheinend" drin waren.
  while DriveExists(Index) do
    begin
      LaufwerkList.Add(Chr(Index + Ord('A')) + ':\');
      Inc(Index);
    end;
end;
Gerade bei der DriveExists-Funktion stehe ich jetzt vor einer meiner Meinung nach Zwiespältigen Frage, enthält diese Zeile wirklich 4 Speicherlecks? Sind das eventuell Folgefehler? Wenn ich die Funktionalität der Funktion haben möchte/ brauche, muss ich dann die Speicherlecks akzeptieren?

Ich hoffe jemand kann mir dort etwas Klarheit verschaffen. Ansonsten war der Tip mit FastMM sehr gut, habe somit meine Speicherlecks von anfänglich 105 auf 58 reduzieren können. Dachte mir schon, dass es einige sein würden, aber sicherlich nicht so viele. Eine Abschließende Frage ist eigentlich sollte man ein Programm möglichst immer mit 0 Speicherlecks erzeugen oder ist eine "verhältnismäßige" Anzahl an Speicherlecks/Zeilenanzahl akzeptabel?

Ps.: im Quellcodebeispiel steht einmal ein anscheinend in Anführungsstrichen, dies ist der Fall, da ich keine qualitativ oder quantitative Erkenntnis daraus gewinnen kann, da keine Erfahrung im Umgang mit Speicherlecks bei mir vorhanden ist.

Vielen Dank
BAMatze
2. Account Sero
  Mit Zitat antworten Zitat