FastMM 4.10 adds a new "FullDebugMode" option.
What this does is:
a) Add a header and footer to all blocks to catch buffer overruns
b) Stores a call stack trace on allocate and free to allow you to investigate the cause of an error. Only return addresses are displayed at this stage - the display of procedure name and line number detail (when debug info is available) may be implemented at a later stage.
c) Zeroes out all freed memory, so using freed blocks should lead to errors being raised closer to the cause of the problem.
d) Reports attempts to call virtual methods of freed objects (provided the blocks have not already been reused).
In "FullDebugMode" freed blocks are never combined with adjacent free blocks and are never returned to the operating system (so once a block of a certain size has been allocated, that block will exist for the duration of the process). They may be reused however. Factor in the extra processing required to do the stack traces and the memory used to store them and you will rightfully conclude that "FullDebugMode" is slow, uses a lot of memory and tends to fragment badly. It is intended for debugging only!
Errors can now also be logged to a text file through the "LogErrorsToFile" option.