Memwatch is a small module that replaces the standard
delete with versions
that add extra debugging features.
Adding Memwatch to your program project won't cure problems, but it
will add extra memory checking that will sometimes detect and report
existing problems so oyu can fix them. Problems detected include:
There are three files you can download:
To use Memwatch, follow these simple steps:
Memwatch.cppto your C++ project.
#include "Memwatch.h"' to all
.cppfiles in your project.
memwatch.log" produced in the current directory after running the program. Each time Memwatch uncovers an error, it reports the available diagnostic information to this file.
Under Microsoft Visual C++
new" to be a macro in order to work with VC++'s debugging runtime library. This means it may cause strange compiler errors or warnings if you are defining your own overloaded
new/deleteoperators to maintain free lists for your ADTs.
If this is the case but you still want to use Memwatch, simply place "
#ifdef _DEBUG ... #endif" around the lines of code in your .h and .cpp files where you define your
operator deletecode. This will allow Memwatch to work correctly.
By selecting the "Debug" or "Release" configuration of your project when compiling, you can control whether or not your own personal free list code is included (it will only be in the "Release" configuration with the above
#ifdef). Memwatch will work under either configuration, but returns more detailed information in the "Debug" configuration.
This version of Memwatch was modified locally by Dr. Edwards to work with Microsoft Visual C++ in standard console-mode applications. If you are working with MFC GUI applications, use the MFC memory debugging settings described below.
If you are using Microsoft Visual C++, you can use Microsoft's own memory debugging code build into the debugging version of its C++ runtime code. Microsoft has designed its memory aid to work with MFC applications, but it can also be used with plain old console-mode Win32 applications.
Microsoft's memory diagnostic features are described under the
DEBUG_NEW macro in the MFC documentation. To use
them in a regular program, do the following:
.cppfile, add '
#include <afx.h>' at the top.
Check Microsoft's on-line books for "
"diagnostics" for more information on what you can do when this
memory tracking support is enabled.
is primarily for spotting memory leaks, so it does not provide as
much checking as Memwatch. It is a useful tool, however.
If you are working under Borland C++, note that Borland sells a commercial tool called CodeGuard that automatically instruments your code to spot a very wide array of memory errors. If you have a Borland's C++ Developer's Suite (version 5.0 or newer), it comes with CodeGuard for free. CodeGuard support can be easily enabled from the TargetExpert dialog. If you have it available, it is very helpful in detecting memory errors.
Purify is a commerical tool for detecting memory errors produced by Pure Atria Corp. Downloadable evaluation copies are available from their web site (only if you want to invest the time, of course).
Because Purify 4.0 has just been made available for Windows NT users, however, some promotional CDs have been sent out. Dr. Edwards has a copy of Purify 4.0 for Windows NT on CD that is good until 2/28/97. If you are working under Windows NT on your own machine and would like to play around with Purify, feel free to drop by his office during office hours to borrow it.
Go to the CS2604 Homepage.