title image


Smiley muß gehen, hier weitere Info's
Ich hatte bisher bei keinem Project irgendwelche Probleme mit FastMM.

Ich nutze WinXPpro + D5pro + D7pro.



Ich habe folgende Dateien in mein Projekt-Verzeichnis kopiert:

FastMM4.pasFastMM4Messages.pasFastMM4Options.incFastMM_FullDebugMode.dll



Noch ein kleiner Tipp:

FastMM kann per Compiler-Direktive sehr einfach zwischen 'normal Mode' und 'Debug-Mode' umgeschaltet werden.

In der FastMM4Options.inc fügst du in die erste Zeile folgendes ein:{$Define Release}Durch auskommentieren dieser Zeile schaltetest du in den Debug-Modus um.

Was in welchem Mode eingeschaltet/ausgeschaltet ist, stellst du ab Zeile 216 ein.

Du mußt nur einmal die Punkte entfernen.

So sieht es bei mir aus:{--------------------------------Option Grouping------------------------------}



{Group the options you use for release and debug versions below}

{$ifdef Release}

{Specify the options you use for release versions below}

{$undef FullDebugMode}

{$undef CheckHeapForCorruption}

{$define ASMVersion}

{$undef EnableMemoryLeakReporting}

{$undef UseOutputDebugString}

{$else}

{Specify the options you use for debugging below}

{$define FullDebugMode}

{$define EnableMemoryLeakReporting}

{$define UseOutputDebugString}

{$endif}

Nun kommt ein erster Test:procedure TForm1.btnClick(Sender: TObject);

begin

TBitmap.Create;

end;



Im Debug-Mode erhälst du beim Programmende in der IDE einen Hinweis.

Details zum Speicherleck findest du in der Datei 'Project_MemoryManager_EventLog.txt'.

Jede Meldung wird am Dateiende angefügt. Willst du das nicht haben (jeder Durchlauf überschreibt die alte Log-Datei) so aktiviere die Zeile 124 in FastMM4Options.inc.

A memory block has been leaked. The size is: 116



Stack trace of when this block was allocated (return addresses):

40297E

402F59

4032AE

402F98

4032AE

41A567

41B713

449436

429EDC



The block is currently used for an object of class: TBitmapImage



Also haben wir ein TBitmap nicht beseitigt.

Falls du die Zeilennummer und den Procedure/Functionsname wissen willst, mußt du deinen Programm die 'TD32 Debug-Infos' mitgeben. In den Project-Optionen im Abschnitt Linker kannst du das ein/ausschalten.



Nun erhalten wir eine viel bessere Aussage:A memory block has been leaked. The size is: 116



Stack trace of when this block was allocated (return addresses):

40297E [System][@GetMem]

402F59 [System][TObject.NewInstance]

4032AE [System][@ClassCreate]

402F98 [System][TObject.Create]

4032AE [System][@ClassCreate]

41A567 [Graphics][TGraphic.Create]

41B713 [Graphics][TBitmap.Create]

449436 [Unit1.pas][Unit1][TForm1.btnClick][110]

429EDC [Controls][TControl.Click]



The block is currently used for an object of class: TBitmapImageDas erzeugen von TBitmap erfolgt also in der Unit1.pas, in der Procedure/Function TForm1.btnClick, in der Zeile 110.



Damit hast du alle Info's um Speicherlecks zu finden und beseitigen.

geschrieben von

Login

E-Mail:
  

Passwort:
  

Beitrag anfügen

Symbol:
 
 
 
 
 
 
 
 
 
 
 
 
 

Überschrift: