Einzelnen Beitrag anzeigen

EWeiss
(Gast)

n/a Beiträge
 
#1

Memoryleak oder doch nicht?

  Alt 29. Mär 2018, 07:43
Die Meldung.
Zitat:
--------------------------------------------------------------------------------------------------------------------------------------
|Methods |Details|Stack |Address |Module |Offset |Unit |Class |Procedure/Method |Line |
--------------------------------------------------------------------------------------------------------------------------------------
|+Leak #1: Type=UnicodeString: Ref count - 1, Content: "'WARNING: DO NOT CHANGE THE ORDER OF THE PROPERTIES!"; Total size=118; Count=1|
|------------------------------------------------------------------------------------------------------------------------------------|
|00000002|03 |00000000|005E8586|SK_Aero.dll |00008586|System | |InternalUStrFromPCharLen | |
|00000002|04 |00000000|0082C55B|SK_Aero.dll |0024C55B|uSkinConfig|TSkinConfig|FBuffin |976[12] |
|00000002|04 |00000000|0082ABEF|SK_Aero.dll |0024ABEF|uSkinConfig|TSkinConfig|GetConfiguration |308[5] |
|00000002|04 |00000000|008234C4|SK_Aero.dll |002434C4|uSkin |TSkinEngine|InitSkin |644[25] |
|00000002|04 |00000000|00833E1B|SK_Aero.dll |00253E1B|uMaster | |SKAERO_InitSkin |806[4] |
|00000002|03 |00000000|75213366|kernel32.dll|00013366|kernel32 | |BaseThreadInitThunk | |
|00000002|03 |00000000|77019900|ntdll.dll |00039900|ntdll | | (possible RtlInitializeExceptionChain+97)| |
|00000002|03 |00000000|770198CE|ntdll.dll |000398CE|ntdll | | (possible RtlInitializeExceptionChain+47)| |
|------------------------------------------------------------------------------------------------------------------------------------|
Wie soll ich das jetzt interpretieren?
Wo oder was ist der Leak UnicodeString?

Aber wie soll dieser entstehen wenn ich doch die Classe beim beenden freigebe?
Delphi-Quellcode:
destructor TSkinEngine.Destroy;
begin

  if Assigned(SkinConfig) then
    SkinConfig.free;

  SkinLoaded := False;
  SkinEngine := nil;

  inherited;
end;
Noch mehr kann ich nicht tun.
Und hier wird das File geschlossen.
Delphi-Quellcode:
procedure TSkinConfig.FBuffin(FileName: string);
var
  sBuffer: string;

begin

  if not FExist(FileName) then
    Exit;

  Assignfile(ParseFile, FileName);
  reset(ParseFile);

  try
    try
      while not eof(ParseFile) do
      begin
        ReadLN(ParseFile, sBuffer);
        AppendToLinkedList(nReading, sBuffer);
        inc(nReading);
      end;
    except
      raise Exception.Create(SysErrorMessage(GetLastError));
    end;
  finally
    nReading := 0;
    sBuffer := '';
    CloseFile(ParseFile);
  end;
end;
noch bevor die Anwendung beendet wird.
Was will er mir jetzt mit dem FBuffin sagen?

EDIT:
Dieser string wird aus der Textdatei geladen
'WARNING: bla, bla!"

Nun die Datei wird ordnungsgemäß geschlossen und die Classe freigegeben verstehe wer will.
Der String existiert doch dann gar nicht mehr.

gruss

Geändert von EWeiss (29. Mär 2018 um 08:32 Uhr)
  Mit Zitat antworten Zitat