MemCheck versions history
Some previous versions are available here.
2.75 (18 feb 2007)
- Should really work with Delphi 2006 (previous version had a problem).
2.74 (14 December 2006)
- Works with Delphi 2006. Note that I have not tested it myself, it is Yuri who adapted it.
2.73 (1 January 2005)
2.70 (21 July 2004)
- Fixes a bug introduced in version 2.69 for Delphi 5
2.69 (19 July 2004)
-
This version works with Delphi 7.1
2.68 (23 January 2003)
-
There is now a constant to specify whether you want the exceptions to be raised
on end or not
-
Notepad is now specified in a constant, so that it is easier to launch another
app if you wish
-
I now check IOResult before writing to file in case there are pending I/O
errors
2.67 (21 November 2003)
-
- Better thread-safety of the heap-checking code;
-
- Compatible with the Jedi debug info;
-
- New way of naming the output file, should be more comfortable.
2.64 (1 November 2003)
-
- Better reporting for GetMem blocks in Delphi 6;
-
- Dynamic arrays ignored in Delphi 6.
2.63 (22 May 2003)
-
Fixes a bug which occured only when I/O error checking was unset in the
compiler options. The finalization of MemCheck was not correcly located.
2.62 (22 March 2003)
-
With this version and in the followings, dynamic arrays are not checked anymore
2.61 (5 February 2003)
-
Changes the default path for the log file. Was c:\temp, is now the path of the
exe: ParamStr(0)
-
Fixes a bug in function MemoryBlockCorrupted
-
Removes a warning about an unused variable
2.60 (14 december 2002)
2.58 (29 September 2001)
-
The allocations of strings are ignored correctly
-
Instances of classes which do not have a constructor are correctly logged (good
stack)
2.56 (10 August 2001)
-
Works better for projects compiled without stack frames (a bad idea for
debugging, imho)
-
Fixes a bug when objects are used after destruction and memory is really
released
2.55 (08 August 2001)
-
Works with Delphi 6
-
Fixes a bug I introduced when adding the "uses classes", and Kajetan Kryszewski
found (classes frees some memory in its finalization and this was reported as
leak)
2.54 (08 March 2001)
note: there was a version
2.53 which was very similar, only syntactical changes
-
Improves stack walking for calls without stack frames (eg TObject.Create)
-
Only tested with Delphi 5.1
-
No more "exit" (this could lead to resource leak - and anyway I hate
"goto")
-
Now uses Classes, allowing readability improvements (to come) - Well, I would
not pretend this is really readable (it sometimes is not to me !), but things
improve
-
Improves thread safety (previous version could loose track of some blocks due
to the non-atomicity of the linked list changes)
-
Reads debug info from DLLs (uses GetModuleFileName instead of ParamStr(0))
2.52 (19 June 2000)
-
Fixes a bug about stack walking and reaching a bad stack entry (only about
programs which hack the stack, such as QuickReport)
-
Improves stack walking for "user" memory allocations (GetMem)
-
This is the last version which is known to work with Delphi 5.0
2.51 (23 November 1999)
-
New option to display the log file only if useful
-
Fixes a bug if "MemChk" is called more than once
2.50 (24 September 1999)
-
Gives up Delphi 4 compatibility, simplifying and improving readability of the
code
2.09 (16 September 1999)
-
Fixes one bug which leaded to integer overflows while creating the output
-
This is the last version which is known to work with Delphi 3 and 4
2.08 (10 September 1999)
-
Does not use a heuristic to detect string allocation (this implies that this
version can discover new leaks)
-
Does not raise exceptions for unknown addresses (remember we used to raise
exceptions in the finalization of MemCheck ?)
-
Fixes several tiny bugs
2.07 (5 August 1999)
-
Fixed a compilation bug for Delphi 3 users
-
Fixed a bug in the seeking for debug information (raised integer overflows)
2.06 (15 June 1999)
-
Improved the heuristic to detect broken call stacks - Used to fail with an
Integer overflow (when your code was buggy)
-
Displ is now calculated - suggested by Juan Vidal Pich
(juanvp@alt.net)
-
We don't call SysGetMem, SysFreeMem or SysReallocMem anymore. We call the
routine of the old memory manager. This is a major improvement because this
makes it possible to use MemCheck with DLLs - suggested by Juan Vidal Pich
(juanvp@alt.net)
2.05 (8 June 1999)
-
When in Delphi 4, use CardinalToHexa instead of IntToHex
2.04 (23 March 1999)
-
A change found by Ian Stiles (ian.stiles@knowlix.com) greatly improves the
finding of allocation addresses, mainly for instances of classes which do not
redefine the constructor of TObject (eg TStringList).
2.03 (19 March 1999)
-
I make the necessary changes for MemCheck to compile when the "@"
operator is typed (project option). Thanks to Paul Coomans for telling us about
this problem.
-
I make less options necessary to use MemCheck (eg it is not neccessary anymore
to have stack frames to use MemCheck). However, you'll still get better
feedback from MemCheck if you are in full debugging mode.
2.02 (26 October 1998)
-
Fixed a bug in the output of the information
2.01 (6 October 1998)
-
ChangeFinalizationsOrder is written in a much better way (I did not know that a
unit's initialization could be refered to using unitname.unitname - Thanks to
Jonas for this hint !)
-
We use the debug informations found in the executable if they are available
(Thanks to Clive Turvey, see below)
-
MemCheckLogFileName is an exported variable, so you can set it at run-time
-
New option: CheckHeapStatus. At the end of each call to the memory manager, we
get the heap status. At each entry into a method of the memory manager, we
verify that the heap status has not changed (the contrary would mean something
has gone bad and has corrupted the memory). When this options is turned ON, the
rest of MemCheck is disabled. It is then impossible to hunt memory leaks. You
have to choose ! Warning: this is VERY VERY time consuming
-
New option: IdentifyObjectFields, which attempts an improved reporting which
specifies "object dummy is never destroyed and was likely to be in 3rd
field of object ..."
-
MemCheck now correctly raises EOutOfMemory when no more memory is available
from the system. Documentation slightly improved.
-
Note: there were probably lots of changes since 2.0, but we forgot to update
this list
2.00 (18 September 1997)
-
MemCheck Works on Delphi 3 (build 5.53), under Windows NT (should work on Win 95, but this was not tested).
Last update: feb 2007