Ich glaube du leakest den Speicher von vProcList
, falls bFound = True
.
Auf jeden fall ist das so.
Beim beenden der Anwendung bekomme ich ein Speicherleck Meldung von der vProcList angezeigt.
Glaube aber das ist deshalb weil die Pointer verschoben werden wie oder wo auch immer.
Denn ich gebe die ja frei FreeAndNil(vProcList);
Aber es fruchtet nicht die Speicherlecks kommen trotzdem.
Zitat:
Kannst du da denn nicht mal genauer reinsteppen mit dem Debugger und eine genaue Stelle nennen, an der es zum ersten Mal kracht nach dem Event?
Es kracht sobald ich irgendwo wieder auf TAudioVolume zugreife.
Die Zeile ist diese aber die macht nichts besonderes was den Fehler auslösen könnte.
Delphi-Quellcode:
function TAudioVolume.AudioSessionInfo(SessionIndex: integer): TAudioSessionInfo;
var
Lbl: TLabel;
tmpStr: string;
bNull: BOOL;
i: integer;
begin
Result.ActiveSession := '';
Result.DisplayName := '';
Result.StateSession := '';
Result.IconPath := '';
Result.SessionIdentifier := '';
Result.ProcessID := '';
Result.IsSystemSoundsSession := -1;
Result.SessionGuid := StringToGUID('{00000000-0000-0000-0000-000000000000}');
Result.Device := nil;
Result.PID := 0;
bNull := False;
tmpStr := ExtractFileExt(FAudioSessionInfo.DisplayName); \\ <<<<<<< Hier kracht es
if Length(tmpStr) > 1 then
tmpStr := ChangeFileExt(FAudioSessionInfo.DisplayName, '')
else
tmpStr := FAudioSessionInfo.DisplayName;
Ok
FreeAndNil(vProcList); steht an falscher stelle muss eine Zeile tiefer. Danke.
Werde mal schauen ob das mein Problem behebt.
Die Leaks sind behoben aber das Problem bleibt bestehen.
Habe nur diese beiden. Siehe Anhang.
gruss