Hi John,

>From memory (pun unintended) those 2 reported links are normal.  As i recall 
>reading somewhere (I thought it was the FAQ File for FastMM, but just had a 
>very quick check and couldn't see it mentioned) that it is normal for those 2 
>items to be reported as memory leaks when doing the FullDebugMode.

As i have the same leaks reported on my programs when debugging.

Cheers

Anthony.

From: delphi-boun...@delphi.org.nz [mailto:delphi-boun...@delphi.org.nz] On 
Behalf Of John Bird
Sent: Wednesday, 3 March 2010 12:09 p.m.
To: NZ Borland Developers Group - Delphi List
Subject: [DUG] FastMM

I decided to try some memory leak testing on a couple of programs to be sure 
all is OK, and after googling figured that even though I have d2007 the best 
was to download FastMM4 from source forge

This is what I figured to do to run the tests - anyone can correct me if I am 
wrong:

1 - Add Uses FastMM in ...\Components\FastMM\FastMM4.pas as the first used unit 
in the .DPR file.   note I just edited the .DPR file manually.

2 - in the main form create add a line
    ReportMemoryLeaksOnShutdown := true;    //#### FastMM diagnostics if enabled

3 - Edit the FastMM4Options.Inc file to set
 get an error on startup.}
{$define FullDebugMode}

[Note the program is a lot slower with this in]

4 - Add to Project compile options  Debug Dcu's, generate debug info,   local 
symbols,  reference info, use debug DCU's
Add to Project link options include TD32 debug info

I know not all of these are needed, but not being sure which I just turned them 
all on.

5 - I found I had to add to each project search path
..\Components\FastMM   otherwise it could not find   FastMM4Messages.pas or 
FastMM4Messages.dcu
even though that folder was in the IDE global setting Tools/Options/Delphi 
options/Library - Win32/Browsing Path

All that done,  to my relief I got a message that the only leaks were one 
TFileStream, and one AnsiString

"This application has leaked memory. The small block leaks are (excluding 
expected leaks registered by pointer):

5 - 12 bytes: TFileStream x 1
21 - 36 bytes: AnsiString x 1

Note: Memory leak detail is logged to a text file in the same folder as this 
application. To disable this memory leak check, undefine 
"EnableMemoryLeakReporting"."

This program does open and close a lot of files with TFileStream,   (note I do 
all my fileopens with a library routine that also saves a reference number, the 
open mode, and the filename, and so far they all seem to be closed properly- 
but I am checking to be sure).
I haven't yet figured out the culprit, anyone have any hints on how to track 
them down, puzzled at the Ansistring one - what does that mean, as I thought 
strings do not get memory leaks, being reference counted.  There are certainly 
way more than one string in the project.

Also I got a garbaged Project file - ended up with lines like:

    <DCCReference Include="..\CFastMM.Pas" />
    <DCCReference Include="..\CoFastMM.Pas" />
    <DCCReference Include="..\ComFastMM.Pas" />
    <DCCReference Include="..\CompFastMM.Pas" />
    <DCCReference Include="..\CompoFastMM.Pas" />
    <DCCReference Include="..\ComponeFastMM.Pas" />
    <DCCReference Include="..\ComponeneFastMM.Pas" />
    <DCCReference Include="..\ComponenenFastMM.Pas" />
    <DCCReference Include="..\ComponenentFastMM.Pas" />
    <DCCReference Include="..\ComponenentsFastMM.Pas" />
    <DCCReference Include="..\ComponenFastMM.Pas" />
    <DCCReference Include="..\ComponenntsFastMM.Pas" />
    <DCCReference Include="..\ComponentFastMM.Pas" />
    <DCCReference Include="..\ComponentsFastMM.Pas" />
    <DCCReference Include="..\Components\FaFastMM.Pas" />
    <DCCReference Include="..\Components\FasFastMM.Pas" />
    <DCCReference Include="..\Components\FastFastMM.Pas" />
    <DCCReference Include="..\Components\FastMFastMM.Pas" />
    <DCCReference Include="..\Components\FastMM.Pas" />
    <DCCReference Include="..\Components\FastMMFastMM.Pas" />
    <DCCReference Include="..\Components\FastMM\FastMM.Pas" />
    <DCCReference Include="..\Components\FastMM\FastMM4.Pas" />            
<==== this is the right one
    <DCCReference Include="..\Components\FFastMM.Pas" />
    <DCCReference Include="..\ComponFastMM.Pas" />
    <DCCReference Include="..\FastMM.Pas" />

Anyone come across this?  Is it from anything I did wrong?

John
_______________________________________________
NZ Borland Developers Group - Delphi mailing list
Post: delphi@delphi.org.nz
Admin: http://delphi.org.nz/mailman/listinfo/delphi
Unsubscribe: send an email to delphi-requ...@delphi.org.nz with Subject: 
unsubscribe

Reply via email to