]> git.lyx.org Git - lyx.git/blobdiff - development/Win32/vld/README.html
Replace automatic logofication with insets
[lyx.git] / development / Win32 / vld / README.html
index 7182f554b65b9b9fc957a21409e21c93e616218f..87b94694dd8017eb7beba309959825df94d9a437 100644 (file)
-<?xml version="1.0" encoding="iso-8859-1"?>\r
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\r
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" dir="ltr">\r
-\r
-<head>\r
-    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />\r
-\r
-    <style title="Visual Leak Detector" type="text/css" media="screen,print">\r
-        body {\r
-            margin: 0;\r
-            font-family: verdana, sans-serif;\r
-        }\r
-\r
-        #masthead {\r
-            border-width: 0 0 1px 0;\r
-            border-style: solid;\r
-            border-color: #808080;\r
-            color: #ffffff;\r
-            background-color: #3569cc;\r
-        }\r
-\r
-        #content {\r
-            margin: 1em 1em 1em 1em;\r
-            font-size: 10pt;\r
-        }\r
-\r
-        #toc {\r
-            float: right;\r
-            color: #000000;\r
-            background-color: #ffeda5;\r
-        }\r
-\r
-        h1 {\r
-            margin: 0 0 0 0;\r
-            padding: 0.5em 1em 0 1em;\r
-            text-align: right;\r
-            font-size: 24pt;\r
-            font-family: arial, sans-serif;\r
-        }\r
-\r
-        h2 {\r
-            margin-top: 0;\r
-            border-width: 2px;\r
-            border-style: solid;\r
-            border-color: #3569cc;\r
-            padding-left: 1em;\r
-            font-size: 16pt;\r
-            font-family: "trebuchet ms", sans-serif;\r
-            letter-spacing: -1pt;\r
-            color: #000000;\r
-            background-color: #6599fc;\r
-        }\r
-\r
-        h3 {\r
-            font-size: 11pt;\r
-        }\r
-\r
-        li {\r
-            margin-bottom: 1em;\r
-        }\r
-\r
-        #toc h2 {\r
-            margin: 0;\r
-            border-width: 2px 2px 2px 0;\r
-            border-style: solid;\r
-            border-color: #6599fc;\r
-            text-align: center;\r
-            color: #ffffff;\r
-            background-color: #3569cc;\r
-        }\r
-\r
-        #toc ul {\r
-            margin-left: 0;\r
-            padding: 0;\r
-            list-style: none;\r
-        }\r
-\r
-        #toc li {\r
-            margin: 1em;\r
-        }\r
-\r
-        a {\r
-            color: #0000ff;\r
-            background-color: inherit;\r
-            text-decoration:none;\r
-        }\r
-\r
-        a:hover {\r
-            text-decoration: underline;\r
-        }\r
-\r
-        a:visited {\r
-            color: #0000ff;\r
-            background-color: inherit;\r
-        }\r
-\r
-        .api {\r
-            font-size: 12pt;\r
-            font-weight: bold;\r
-        }\r
-\r
-        .code {\r
-            font-family: "courier new", monospace;\r
-            color: #000000;\r
-            background-color: #e0e0e0;\r
-        }\r
-\r
-        .filename {\r
-            font-style: italic;\r
-        }\r
-\r
-        .function {\r
-            font-style: italic;\r
-        }\r
-\r
-        .note {\r
-            margin-left: 2em;\r
-        }\r
-\r
-        .operator {\r
-            font-style: italic;\r
-        }\r
-\r
-        .option {\r
-            font-size: 10pt;\r
-            font-weight: bold;\r
-        }\r
-\r
-        ul.vcsearchpath {\r
-            border-width: 1px;\r
-            border-style: dashed;\r
-            border-color: #000000;\r
-            color: #000000;\r
-            background-color: #ffeda5;\r
-            list-style: none;\r
-        }\r
-\r
-        ul.vcsearchpath li {\r
-            margin-bottom: 0;\r
-        }\r
-\r
-        #slogan {\r
-            margin-bottom: 0;\r
-            padding: 0 1em 1em 1em;\r
-            border-width: 0 0 1px 0;\r
-            border-style: solid;\r
-            border-color: #404040;\r
-            text-align: right;\r
-            font-size: larger;\r
-            font-style: italic;\r
-            color: #6599fc;\r
-            background-color: inherit;\r
-        }\r
-\r
-        #copyright {\r
-            text-align: right;\r
-            font-family: georgia, serif;\r
-            color: #808080;\r
-            background-color: inherit;\r
-        }\r
-\r
-        #compliance {\r
-            text-align: right;\r
-        }\r
-\r
-        #compliance img {\r
-            border: 0;\r
-        }\r
-        \r
-        blockquote {\r
-            font-style: italic;\r
-        }\r
-    </style>\r
-\r
-    <title>Visual Leak Detector (Beta)</title>\r
-\r
-</head>\r
-\r
-\r
-\r
-\r
-<body>\r
-\r
-<div id="masthead">\r
-\r
-<h1>Visual&nbsp;Leak&nbsp;Detector&nbsp;1.9f (Beta)</h1>\r
-\r
-<p id="slogan">Enhanced Memory Leak Detection for Visual&nbsp;C++</p>\r
-\r
-</div> <!-- #masthead -->\r
-\r
-\r
-\r
-\r
-<div id="content">\r
-\r
-<div id="toc">\r
-\r
-<h2>Table of Contents</h2>\r
-\r
-<ul>\r
-    <li><a href="#intro">Introduction</a></li>\r
-\r
-    <li><a href="#use">Using Visual&nbsp;Leak&nbsp;Detector</a></li>\r
-\r
-    <li><a href="#configure">Configuration Options</a></li>\r
-\r
-    <li><a href="#control">Controlling Leak Detection at Runtime</a></li>\r
-\r
-    <li><a href="#build">Building Visual&nbsp;Leak&nbsp;Detector from Source</a></li>\r
-\r
-    <li><a href="#x64">Windows x64 Support</a></li>\r
-\r
-    <li><a href="#faq">Frequently Asked Questions</a></li>\r
-\r
-    <li><a href="#restrictions">Known Restrictions</a></li>\r
-\r
-    <li><a href="#license">License</a></li>\r
-\r
-    <li><a href="#contact">Contacting the Author</a></li>\r
-</ul>\r
-\r
-</div> <!-- #toc -->\r
-\r
-\r
-\r
-\r
-<h2 id="intro">Introduction</h2>\r
-\r
-<p>Visual&nbsp;C++ provides built-in memory leak detection, but its capabilities are minimal at best. This memory leak\r
-   detector was created as a free alternative to the built-in memory leak detector provided with Visual&nbsp;C++. Here\r
-   are some of Visual&nbsp;Leak&nbsp;Detector's features, none of which exist in the built-in detector:</p>\r
-\r
-<ul>\r
-    <li>Provides a complete stack trace for each leaked block, including source file and line number information when\r
-        available.</li>\r
-\r
-    <li>Detects most, if not all, types of in-process memory leaks including COM-based leaks, and pure Win32 heap-based\r
-    leaks.</li>\r
-\r
-    <li>Selected modules (DLLs or even the main EXE) can be excluded from leak detection.</li>\r
-\r
-    <li>Provides complete data dumps (in hex and ASCII) of leaked blocks.</li>\r
-\r
-    <li>Customizable memory leak report: can be saved to a file or sent to the debugger and can include a variable level\r
-    of detail.</li>\r
-</ul>\r
-\r
-<p>Other after-market leak detectors for Visual&nbsp;C++ are already available. But most of the really popular ones,\r
-   like Purify and BoundsChecker, are very expensive. A few free alternatives exist, but they're often too intrusive,\r
-   restrictive, or unreliable. Visual&nbsp;Leak&nbsp;Detector is currently the only freely available memory leak\r
-   detector for Visual C++ that provides all of the above professional-level features packaged neatly in an easy-to-use\r
-   library.</p>\r
-\r
-<p>Visual Leak Detector is <a href="#license">licensed</a> free of charge as a service to the Windows developer\r
-   community. If you find it to be useful and would like to just say "Thanks!", or you think it stinks and would like to\r
-   say "This thing sucks!", please feel free to <a href="mailto:dmoulding@gmail.com">drop me a note</a>. Or, if you'd\r
-   prefer, you can <a href="#contact">contribute a small donation</a>. Both are very appreciated.</p>\r
-\r
-\r
-\r
-\r
-<h2 id="use">Using Visual&nbsp;Leak&nbsp;Detector</h2>\r
-\r
-<p>This section briefly describes the basics of using Visual&nbsp;Leak&nbsp;Detector (VLD).</p>\r
-\r
-<p><strong>Important! :</strong> Before using VLD with any Visual C++ project, you must first add the Visual Leak\r
-   Detector include and library directories to the Visual C++ include and library directory search paths:</p>\r
-\r
-<ul>\r
-    <li><strong>Visual&nbsp;C++ 8</strong>: Go to Tools -> Options -> Projects and Solutions -> VC++ Directories.\r
-        Select "Include files" from the "Show Directories For" drop-down menu. Add the\r
-        <span class="filename">include</span> subdirectory from the Visual Leak Detector installation directory. Move it\r
-        to the bottom of the list. Then select "Library files" from the drop-down menu and add the\r
-        <span class="filename">lib</span> subdirectory from the Visual Leak Detector installation directory. Again, move\r
-        it to the bottom of the list.</li>\r
-        \r
-    <li><strong>Visual&nbsp;C++ 7</strong>: Go to Project Properties -> C/C++ -> General -> Additional Include\r
-        Directories and add the <span class="filename">include</span> subdirectory from the Visual Leak Detector\r
-        installation directory. Move it to the bottom of the list. Then select Additional Library Directories and add\r
-        the <span class="filename">lib</span> subdirectory from the Visual Leak Detector installation directory. Again,\r
-        move it to the bottom of the list.</li>\r
-\r
-    <li><strong>Visual&nbsp;C++ 6</strong>: Go to Tools -> Options -> Directories. Select "Include files" from\r
-        the "Show Directories For" drop-down menu. Add the <span class="filename">include</span> subdirectory\r
-        from the Visual Leak Detector installation directory. Move it to the bottom of the list. Then select "Library\r
-        files" from the drop-down menu and add the <span class="filename">lib</span> subdirectory from the Visual Leak\r
-        Detector installation directory. Again, move it to the bottom of the list.</li>\r
-</ul>\r
-        \r
-<p>To use VLD with your project, follow these simple steps:</p>\r
-\r
-<ol>\r
-    <li>In at least one C/C++ source file from your program, include the <span class="filename">vld.h</span> header\r
-        file. It should not matter which file you add the include statement to. It also should not matter in what order\r
-        the header is included in relation to other headers. The only exception is\r
-        <span class="filename">stdafx.h</span> (or any other precompiled header). A precompiled header, such as\r
-        <span class="filename">stdafx.h</span>, must always be the first header included in a source file, so\r
-        <span class="filename">vld.h</span> must be included after any precompiled headers.</li>\r
-\r
-    <li>If your program contains one or more DLLs that you would also like to check for memory leaks, then also include\r
-        <span class="filename">vld.h</span> in at least one source file from each DLL to be included in leak\r
-        detection.</li>\r
-\r
-    <li>Build the debug version of your program.</li>\r
-</ol>\r
-\r
-<p class="note"><strong>Note:</strong> Unlike earlier (pre-1.9) versions of VLD, it is now acceptable to include\r
-   <span class="filename">vld.h</span> in every source file, or to include it in a common header that is included by\r
-   many or all source files. Only one copy of the VLD code will be loaded into the process, regardless of how many\r
-   source files include <span class="filename">vld.h</span>.</p>\r
-\r
-<p>VLD will detect memory leaks in your program whenever you run the debug version. When you run the program under the\r
-   Visual&nbsp;C++ debugger, a report of all the memory leaks detected will be displayed in the debugger's output window\r
-   when your program exits (the report can optionally be saved to a file instead, see\r
-   <span class="option">ReportFile</span> under <a href="#configure">Configuration Options</a>). Double-clicking on a\r
-   source file's line number in the memory leak report will take you to that file and line in the editor window,\r
-   allowing easy navigation of the code path leading up to the allocation that resulted in the memory leak.</p>\r
-\r
-<p class="note"><strong>Note:</strong> When you build release versions of your program, VLD will not be linked into the\r
-   executable. So it is safe to leave <span class="filename">vld.h</span> included in your source files when doing\r
-   release builds. Doing so will not result in any performance degradation or any other undesirable overhead.</p>\r
-\r
-\r
-\r
-\r
-<h2 id="configure">Configuration Options</h2>\r
-\r
-<p>There are a several configuration options that control specific aspects of VLD's operation. These configuration\r
-   options are stored in the <span class="filename">vld.ini</span> configuration file. By default, the configuration\r
-   file should be in the Visual Leak Detector installation directory. However, the configuration file can be copied to\r
-   the program's working directory, in which case the configuration settings in that copy of\r
-   <span class="filename">vld.ini</span> will apply only when debugging that one program.</p>\r
-\r
-<dl>\r
-    <dt class="option">VLD</dt>\r
-    <dd>\r
-        <p>This option acts as a master on/off switch. By default, this option is set to "on". To <em>completely\r
-        disable</em> Visual Leak Detector at runtime, set this option to "off". When VLD is turned off using this\r
-        option, it will do nothing but print a message to the debugger indicating that it has been turned off.</p>\r
-    </dd>\r
-    \r
-    <dt class="option">AggregateDuplicates</dt>\r
-    <dd>\r
-        <p>Normally, VLD displays each individual leaked block in detail. Setting this option to "yes" will make VLD\r
-           aggregate all leaks that share the same size and call stack under a single entry in the memory leak report.\r
-           Only the first leaked block will be reported in detail. No other identical leaks will be displayed. Instead,\r
-           a tally showing the total number of leaks matching that size and call stack will be shown. This can be useful\r
-           if there are only a few sources of leaks, but those few sources are repeatedly leaking a very large number of\r
-           memory blocks.</p>\r
-    </dd>\r
-\r
-    <dt class="option">ForceIncludeModules</dt>\r
-    <dd>\r
-        <p>In some rare cases, it may be necessary to include a module in leak detection, but it may not be possible to\r
-           include <span class="filename">vld.h</span> in any of the module's sources. In such cases, this option can be\r
-           used to force VLD to include those modules in leak detection. List the names of the modules (DLLs) to be\r
-           forcefully included in leak detection. If you do use this option, it's advisable to also add\r
-           <span class="filename">vld.lib</span> to the list of library modules in the linker options of your project's\r
-           settings.</p>\r
-\r
-        <p class="note"><strong>Caution:</strong> Use this option only when absolutely necessary. In some situations,\r
-           use of this option may result in unpredictable behavior including false leak reports and/or crashes. It's\r
-           best to stay away from this option unless you are sure you understand what you are doing.</p>\r
-    </dd>\r
-\r
-    <dt class="option">MaxDataDump</dt>\r
-    <dd>\r
-        <p>Set this option to an integer value to limit the amount of data displayed in memory block data dumps. When\r
-           this number of bytes of data have been dumped, the dump will stop. This can be useful if any of the leaked\r
-           blocks are very large and the debugger's output window becomes too cluttered. You can set this option to 0\r
-           (zero) if you want to suppress data dumps altogether.</p>\r
-    </dd>\r
-\r
-    <dt class="option">MaxTraceFrames</dt>\r
-    <dd>\r
-        <p>By default, VLD will trace the call stack for each allocated block as far back as possible. Each frame traced\r
-           adds additional overhead (in both CPU time and memory usage) to your debug executable. If you'd like to limit\r
-           this overhead, you can define this macro to an integer value. The stack trace will stop when it has traced\r
-           this number of frames. The frame count may include some of the "internal" frames which, by default, are not\r
-           displayed in the debugger's output window (see <span class="option">TraceInternalFrames</span> below). In\r
-           some cases there may be about three or four "internal" frames at the beginning of the call stack. Keep this\r
-           in mind when using this macro, or you may not see the number of frames you expect.</p>\r
-    </dd>\r
-\r
-    <dt class="option">ReportEncoding</dt>\r
-    <dd>\r
-        <p>When the memory leak report is saved to a file, the report may optionally be Unicode encoded instead of using\r
-           the default ASCII encoding. This might be useful if the data contained in leaked blocks is likely to consist\r
-           of Unicode text. Set this option to "unicode" to generate a Unicode encoded report.</p>\r
-    </dd>\r
-\r
-    <dt class="option">ReportFile</dt>\r
-    <dd>\r
-        <p>Use this option to specify the name and location of the file in which to save the memory leak report when\r
-           using a file as the report destination, as specified by the <span class="option">ReportTo</span> option. If\r
-           no file is specified here, then VLD will save the report in a file named "memory_leak_report.txt" in the\r
-           working directory of the program.</p>\r
-    </dd>\r
-\r
-    <dt class="option">ReportTo</dt>\r
-    <dd>\r
-        <p>The memory leak report may be sent to a file in addition to, or instead of, the debugger. Use this option to\r
-           specify which type of destination to use. Specify one of "debugger" (the default), "file", or "both".</p>\r
-    </dd>\r
-\r
-    <dt class="option">SelfTest</dt>\r
-    <dd>\r
-        <p>VLD has the ability to check itself for memory leaks. This feature is always active. Every time you run VLD,\r
-           in addition to checking your own program for memory leaks, it is also checking itself for leaks. Setting this\r
-           option to "on" forces VLD to intentionally leak a small amount of memory: a 21-character block filled with\r
-           the text "Memory Leak Self-Test". This provides a way to test VLD's ability to check itself for memory leaks\r
-           and verify that this capability is working correctly. This option is usually only useful for debugging VLD\r
-           itself.</p>\r
-    </dd>\r
-    \r
-    <dt class="option">SlowDebuggerDump</dt>\r
-    <dd>\r
-        <p>If enabled, this option causes Visual Leak Detector to write the memory leak report to the debugger's output\r
-           window at a slower than normal rate. This option is specifically designed to work around a known issue with\r
-           some older versions of Visual Studio where some data sent to the output window might be lost if it is sent\r
-           too quickly. If you notice that some information seems to be missing from the memory leak report, try turning\r
-           this on.</p>\r
-    </dd>\r
-\r
-    <dt class="option">StackWalkMethod</dt>\r
-    <dd>\r
-        <p>Selects the method to be used for walking the stack to obtain call stacks for allocated memory blocks. The\r
-           default "fast" method may not always be able to successfully trace completely through all call stacks. In\r
-           such cases, the "safe" method may prove to be more reliable in obtaining the full stack trace. The\r
-           disadvantage with the "safe" method is that it is significantly slower than the "fast" method and will\r
-           probably result in very noticeable performance degradation of the program being debugged. In most cases it\r
-           should be okay to leave this option set to "fast". If you experience problems getting VLD to show call\r
-           stacks, you can try setting this option to "safe".</p>\r
-\r
-        <p>If you do use the "safe" method, and notice a significant performance decrease, you may want to consider\r
-           using the <span class="option">MaxTraceFrames</span> option to limit the number of frames traced to a\r
-           relatively small number. This can reduce the amount of time spent tracing the stack by a very large\r
-           amount.</p>\r
-    </dd>\r
-\r
-    <dt class="option">StartDisabled</dt>\r
-    <dd>\r
-        <p>Set this option to "yes" to disable memory leak detection initially. This can be useful if you need to be\r
-           able to selectively enable memory leak detection from runtime, without needing to rebuild the executable;\r
-           however, this option should be used with caution. Any memory leaks that may occur before memory leak\r
-           detection is enabled at runtime will go undetected. For example, if the constructor of some global variable\r
-           allocates memory before execution reaches a subsequent call to <span class="function">VLDEnable</span>, then\r
-           VLD will not be able to detect if the memory allocated by the global variable is never freed. Refer to the\r
-           following section on <a href="#control">controlling leak detection at runtime</a> for details on using the\r
-           runtime APIs which can be useful in conjunction with this option.</p>\r
-    </dd>\r
-\r
-    <dt class="option">TraceInternalFrames</dt>\r
-    <dd>\r
-        <p>This option determines whether or not all frames of the call stack, including frames internal to the heap,\r
-           are traced. There will always be a number of frames on the call stack which are internal to Visual Leak\r
-           Detector and C/C++ or Win32 heap APIs that aren't generally useful for determining the cause of a leak.\r
-           Normally these frames are skipped during the stack trace, which somewhat reduces the time spent tracing and\r
-           amount of data collected and stored in memory. Including all frames in the stack trace, all the way down into\r
-           VLD's own code can, however, be useful for debugging VLD itself.</p>\r
-    </dd>\r
-</dl>\r
-\r
-\r
-\r
-\r
-<h2 id="control">Controlling Leak Detection at Runtime</h2>\r
-\r
-<p>Using the default configuration, VLD's memory leak detection will be enabled during the entire run of your program.\r
-   In certain scenarios it may be desirable to selectively disable memory leak detection in certain segments of your\r
-   code. VLD provides simple APIs for controlling the state of memory leak detection at runtime. To access these APIs,\r
-   include <span class="filename">vld.h</span> in the source file that needs to use them.</p>\r
-\r
-<dl>\r
-    <dt class="api">VLDDisable</dt>\r
-    <dd>\r
-        <p>This function disables memory leak detection. After calling this function, memory leak detection will remain\r
-           disabled until it is explicitly re-enabled via a call to VLDEnable.</p>\r
-\r
-        <pre class="code">void VLDDisable (void);</pre>\r
-\r
-        <h3>Arguments:</h3>\r
-\r
-        <p>This function accepts no arguments.</p>\r
-\r
-        <h3>Return Value:</h3>\r
-\r
-        <p>None (this function always succeeds).</p>\r
-\r
-        <h3>Notes:</h3>\r
-\r
-        <p>This function controls memory leak detection on a per-thread basis. In other words, calling this function\r
-           disables memory leak detection for only the thread that called the function. Memory leak detection will\r
-           remain enabled for any other threads in the same process. This insulates the programmer from having to\r
-           synchronize multiple threads that disable and enable memory leak detection. However, note also that this\r
-           means that in order to disable memory leak detection process-wide, this function must be called from every\r
-           thread in the process.</p>\r
-    </dd>\r
-\r
-\r
-    <dt class="api">VLDEnable</dt>\r
-    <dd>\r
-        <p>This function enables memory leak detection if it was previously disabled. After calling this function,\r
-           memory leak detection will remain enabled unless it is explicitly disabled again via a call to\r
-           VLDDisable().</p>\r
-\r
-        <pre class="code">void VLDEnable (void);</pre>\r
-\r
-        <h3>Arguments:</h3>\r
-\r
-        <p>This function accepts no arguments.</p>\r
-\r
-        <h3>Return Value:</h3>\r
-\r
-        <p>None (this function always succeeds).</p>\r
-\r
-        <h3>Notes:</h3>\r
-\r
-        <p>This function controls memory leak detection on a per-thread basis. See the remarks for\r
-           <span class="function">VLDDisable</span> regarding multithreading and memory leak detection for details.\r
-           Those same concepts also apply to this function.</p>\r
-    </dd>\r
-</dl>\r
-\r
-\r
-\r
-\r
-<h2 id="build">Building Visual&nbsp;Leak&nbsp;Detector from Source</h2>\r
-\r
-<p>Because Visual&nbsp;Leak&nbsp;Detector is open source, it can be built from source if you want to tweak it to your\r
-   liking. The most difficult part about building VLD from source is getting your build environment correctly set up.\r
-   But if you follow these instructions carefully, the  process should be fairly painless.</p>\r
-\r
-<ol>\r
-    <li>VLD depends on the Debug Help Library. This library is part of\r
-        <a href="http://www.microsoft.com/whdc/devtools/debugging/default.mspx">Debugging Tools for Windows</a> (DTfW).\r
-        Download and install DTfW in order to install the required headers and libraries. I recommend installing version\r
-        6.5 of DTfW. Newer versions may also work, but older versions will probably not work. Be sure to manually select\r
-        to install the SDK files during the DTfW installation or the headers and libraries will not be installed (they\r
-        are not installed with a default installation).</li>\r
-\r
-    <li>Visual&nbsp;C++ will need to be made aware of where it can find the Debug Help Library header and library files.\r
-        Add the <span class="filename">sdk\inc</span> and <span class="filename">sdk\lib</span> subdirectories from the\r
-        DTfW installation directory to the include and library search paths in Visual&nbsp;C++. (See the section above\r
-        on <a href="#use">using Visual Leak Detector</a> on instructions for adding to these search paths).\r
-    </li>\r
-\r
-    <li>VLD also requires a reasonably up-to-date Platform&nbsp;SDK. It is known to work with the latest SDK (as of this\r
-        writing) which is the Windows Server 2003 R2 SDK. It should also work with earlier SDKs, such as the Windows XP\r
-        SP2 SDK or may even work with SDKs as old as the February 2003 SDK. If in doubt,\r
-        <a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=A55B6B43-E24F-4EA3-A93E-40C0EC4F68E5&amp;displaylang=en">update\r
-        your Platform&nbsp;SDK</a> to the latest version.</li>\r
-\r
-    <li>Again, Visual&nbsp;C++ will need to know where to find the Platform&nbsp;SDK headers and libraries. Add the\r
-        <span class="filename">Include</span> and <span class="filename">Lib</span> subdirectories from the\r
-        Platform&nbsp;SDK installation directory to the Include and Library search paths, respectively. The\r
-        Platform&nbsp;SDK directories should be placed just after the DTfW directories.</li>\r
-</ol>\r
-\r
-<p>To summarize, your Visual&nbsp;C++ include search path should look something like this:</p>\r
-\r
-<ul class="vcsearchpath">\r
-   <li>C:\Program&nbsp;Files\Debugging&nbsp;Tools&nbsp;for&nbsp;Windows\sdk\inc</li>\r
-\r
-   <li>C:\Program&nbsp;Files\Microsoft&nbsp;Platform&nbsp;SDK\Include</li>\r
-\r
-   <li>C:\Program&nbsp;Files\Microsoft&nbsp;Visual&nbsp;Studio\VCx\Include</li>\r
-   \r
-   <li>...</li>\r
-</ul>\r
-\r
-<p>And your Visual&nbsp;C++ library search path should look like this:</p>\r
-\r
-<ul class="vcsearchpath">\r
-   <li>C:\Program&nbsp;Files\Debugging&nbsp;Tools&nbsp;for&nbsp;Windows\sdk\lib</li>\r
-\r
-   <li>C:\Program&nbsp;Files\Microsoft&nbsp;Platform&nbsp;SDK\Lib</li>\r
-\r
-   <li>C:\Program&nbsp;Files\Microsoft&nbsp;Visual&nbsp;Studio\VCx\Lib</li>\r
-   \r
-   <li>...</li>\r
-</ul>\r
-\r
-<p>In the above examples, "VCx" could be "VC", "VC7", or "VC98" (or possibly other values) depending on which version of\r
-   Visual Studio you have installed. Also, the name of your Platform&nbsp;SDK directory will probably be different from\r
-   the example depending on which version of the Platform&nbsp;SDK you have installed.</p>\r
-\r
-<p>Once you have completed all of the above steps, your build environment should be ready. To build VLD, just open the\r
-   <span class="filename">vld.sln</span> solution file and do a full build.</p>\r
-\r
-<p>When actually running the built project, <span class="filename">vld.dll</span> will expect to find the Debug Help\r
-   Library as a private assembly. The private assembly must be located in the same directory as\r
-   <span class="filename">vld.dll</span> (either the <span class="filename">Release</span> or\r
-   <span class="filename">Debug</span> directory by default). Otherwise, when VLD is loaded, an error message will pop\r
-   up indicating that the program failed to initialize, and you will see a message similar to the following in the\r
-   debugger's output window:</p>\r
-   <blockquote><p>LDR: LdrpWalkImportDescriptor() failed to probe C:\Projects\vld\Release\vld.dll for its manifest,\r
-   ntstatus 0xc0150002</p></blockquote>\r
-   \r
-<p>To ensure that <span class="filename">vld.dll</span> finds the required private assembly, you need to copy\r
-   <span class="filename">dbghelp.dll</span> and <span class="filename">Microsoft.DTfW.DHL.manifest</span> to the\r
-   same directory that <span class="filename">vld.dll</span> is in.</p>\r
-\r
-\r
-\r
-\r
-<h2 id="x64">Windows x64 Support</h2>\r
-\r
-<p>The VLD source code has been modified to add support for x64-based 64-bit Windows. However, the binary contained in\r
-   the distributed version of VLD is 32-bit only. To take advantage of the 64-bit support, you'll need to build a 64-bit\r
-   version of VLD from source. To build the 64-bit version, follow the instructions for <a href="#build">building VLD\r
-   from source</a>. So long as it is built using a x64-compatible compiler in 64-bit mode, the resulting DLL will be a\r
-   64-bit binary.</p>\r
-\r
-<p class="note"><strong>Note:</strong> I have not personally tested the 64-bit extensions so they are not absolutely\r
-   guaranteed to work out-of-the-box. There may be a few lingering 64-bit compiler errors that still need to be worked\r
-   out. If you need 64-bit support and run into problems trying to build the source in 64-bit mode, please\r
-   <a href="mailto:dmoulding@gmail.com">let me know</a>. I'll be glad to assist in getting the 64-bit code working\r
-   properly.</p>\r
-\r
-\r
-\r
-\r
-<h2 id="faq">Frequently Asked Questions</h2>\r
-\r
-<dl>\r
-    <dt>When I try to compile my program with VLD, it fails and the compiler gives this error: <strong>Cannot open include file:\r
-    'vld.h': No such file or directory</strong>.</dt>\r
-    <dd>\r
-        <p>The compiler can't find the header file that VLD installed. This probably means that VLD's include\r
-        subdirectory has not been added to the Visual C++ include search path. See the section above about\r
-        <a href="#use">Using Visual Leak Detector</a> for instructions on how to add VLD's directories to the search\r
-        path.</p>\r
-    </dd>\r
-    <dt>In the memory leak report, the callstack contains many lines that say\r
-        <strong>"File and line number unvailable"</strong> or <strong>"Function name unavailable"</strong>.</dt>\r
-    <dd>\r
-        <p>This may mean that VLD couldn't find the symbol database for your program. The symbol database is ususally in\r
-           a file named <span class="filename">[my-program-name].pdb</span>. If this file is not located in the same\r
-           directory as the program itself, then VLD will probably not find it and can't show any file or function\r
-           names.</p>\r
-    </dd>\r
-</dl>\r
-\r
-\r
-\r
-\r
-<h2 id="restrictions">Known Restrictions</h2>\r
-\r
-<p>Known restrictions/limitations in this version of VLD include:</p>\r
-\r
-<ul>\r
-   <li>Memory allocations made through calls to functions loaded from a DLL using delayed loading may not be\r
-       detected.</li> \r
-\r
-   <li>Support for programs that use MFC 7.0 or MFC 7.1 is not complete yet. Some memory leaks from such MFC-based\r
-       programs may not be detected. A possible workaround for this restriction is to try forcefully including the MFC\r
-       DLLs in memory leak detection, by setting the <span class="option">ForceIncludeModules</span> configuration\r
-       option to: "mfc70d.dll mfc71d.dll" and explicitly adding <span class="filename">vld.lib</span> as an input file\r
-       on the linker command line (can be added through project settings by adding it to the list of library modules in\r
-       the linker options). This restriction does not apply to programs that use MFC 4.2 or MFC 8.0 which are both fully\r
-       supported.</li>\r
-       \r
-   <li>Visual Leak Detector may report leaks internal to Visual Leak Detector if the main thread of the process\r
-       terminates while other threads are still running.</li>\r
-       \r
-   <li>On Windows 2000 and earlier operating systems, you may need to manually add the\r
-       <span class="filename">bin\Microsoft.VC80.CRT</span> subdirectory from the Visual Leak Detector installation\r
-       directory to the system PATH environment variable. Also, <span class="filename">dbghelp.dll</span> will probably\r
-       need to be manually copied to the directory where the program being debugged resides. Otherwise the system may\r
-       not find the required DLLs when running VLD.</li>\r
-       \r
-    <li>If more than one copy of the same C Runtime DLL is loaded in the process at the same time, then some leaks may\r
-        go undetected (note that loading more than one copy of the C Runtime DLL at the same time is probably a bad idea\r
-        to begin with).</li>\r
-</ul>\r
-\r
-\r
-\r
-\r
-<h2 id="license">License</h2>\r
-\r
-<p>Visual&nbsp;Leak&nbsp;Detector is distributed under the terms of the\r
-   <a href="http://www.gnu.org/copyleft/lesser.html">GNU Lesser General Public License</a>. This license allows you to\r
-   use the VLD library with your own programs without restriction. However, if you build a program (or another library)\r
-   that is <em>based</em> on the VLD source code, or uses parts of the VLD source code in it, then some restrictions\r
-   will apply. What this means is that you are free to ship and use the distributed version of the VLD DLL with regular\r
-   commercial programs. But if you create a modified version of VLD, that modified version must remain "free software".\r
-   See the <span class="filename"><a href="COPYING.txt">COPYING.txt</a></span> file for details.</p>\r
-\r
-<p>The Debug Help Library (<span class="filename">dbghelp.dll</span>) and Microsoft C Runtime Library\r
-   (<span class="filename">msvcr80.dll</span>) distributed with this software are not part of\r
-   Visual&nbsp;Leak&nbsp;Detector and are not covered under the terms of the GNU Lesser General Public License. They are\r
-   separately copyrighted works of Microsoft Corporation. Microsoft reserves all its rights to its copyrights in the\r
-   Debug Help Library and Microsoft C Runtime Library. Neither your use of the Visual&nbsp;Leak&nbsp;Detector software,\r
-   nor your license under the GNU Lesser General Public license grant you any rights to use the Debug Help Library or\r
-   Microsoft C Runtime Library in <strong>ANY WAY</strong> (for example, redistributing them) that would infringe upon\r
-   Microsoft Corporation's copyright in the Debug Help Library or Microsoft C Runtime Library.</p>\r
-\r
-<h3>NO WARRANTY</h3>\r
-\r
-<p>BECAUSE VISUAL LEAK DETECTOR ("THE SOFTWARE") IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE SOFTWARE, TO\r
-   THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER\r
-   PARTIES PROVIDE THE SOFTWARE "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT\r
-   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE\r
-   QUALITY AND PERFORMANCE OF THE SOFTWARE IS WITH YOU. SHOULD THE SOFTWARE PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL\r
-   NECESSARY SERVICING, REPAIR OR CORRECTION.</p>\r
-\r
-<p>IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY\r
-   WHO MAY MODIFY AND/OR REDISTRIBUTE THE SOFTWARE AS PERMITTED BY THE LICENSING TERMS SET FORTH ABOVE, BE LIABLE TO YOU\r
-   FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY\r
-   TO USE THE SOFTWARE (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED\r
-   BY YOU OR THIRD PARTIES OR A FAILURE OF THE SOFTWARE TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR\r
-   OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p>\r
-\r
-\r
-\r
-\r
-<h2 id="contact">Contacting the Author</h2>\r
-\r
-<p>Please forward any bug reports, questions, comments or suggestions to me at\r
-<a href="mailto:dmoulding@gmail.com">dmoulding@gmail.com.</a></p>\r
-\r
-<p>Donations to help support ongoing development of Visual Leak Detector are very appreciated!</p>\r
-\r
-<form action="https://www.paypal.com/cgi-bin/webscr" method="post">\r
-    <div>\r
-    <input type="hidden" name="cmd" value="_s-xclick" />\r
-    <input type="image" src="https://www.paypal.com/en_US/i/btn/x-click-but21.gif" name="submit" alt="Make payments with PayPal - it's fast, free and secure!" />\r
-    <input type="hidden" name="encrypted" value="-----BEGIN PKCS7-----MIIHJwYJKoZIhvcNAQcEoIIHGDCCBxQCAQExggEwMIIBLAIBADCBlDCBjjELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAkNBMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MRQwEgYDVQQKEwtQYXlQYWwgSW5jLjETMBEGA1UECxQKbGl2ZV9jZXJ0czERMA8GA1UEAxQIbGl2ZV9hcGkxHDAaBgkqhkiG9w0BCQEWDXJlQHBheXBhbC5jb20CAQAwDQYJKoZIhvcNAQEBBQAEgYB96070OV1fBDnfqkGvVtR2bQf+WKQk1DquH9rhxL3QPke1DxmckKvbKQwjqYRjZN+FbaFky71Lz75RsdeJHKcxgcJWw6cMYOI2xrmsa4Vjp00iOPjKGpMBE7roPqnnZT7l36wBBVk7Hbnm8A3MHsqTQXN9/S/rbngN57tANCbsRTELMAkGBSsOAwIaBQAwgaQGCSqGSIb3DQEHATAUBggqhkiG9w0DBwQIfRWj6EIw0C+AgYCtBQ3JuPXxq/j/RpOCteLqJqyePyFExF3ic44Doj4py33hRo9EqJrSUTbigQVT2eHkwQWS9Exs8L9aeBQQahsZNbUCyLgqPvXOOG/Zk+5Xj/2m2oBZ5AMW8rdPVCYJ7NhAc92aiU2yObd/I8n4mLGDRf768HhASKwe/LGmZiH2bKCCA4cwggODMIIC7KADAgECAgEAMA0GCSqGSIb3DQEBBQUAMIGOMQswCQYDVQQGEwJVUzELMAkGA1UECBMCQ0ExFjAUBgNVBAcTDU1vdW50YWluIFZpZXcxFDASBgNVBAoTC1BheVBhbCBJbmMuMRMwEQYDVQQLFApsaXZlX2NlcnRzMREwDwYDVQQDFAhsaXZlX2FwaTEcMBoGCSqGSIb3DQEJARYNcmVAcGF5cGFsLmNvbTAeFw0wNDAyMTMxMDEzMTVaFw0zNTAyMTMxMDEzMTVaMIGOMQswCQYDVQQGEwJVUzELMAkGA1UECBMCQ0ExFjAUBgNVBAcTDU1vdW50YWluIFZpZXcxFDASBgNVBAoTC1BheVBhbCBJbmMuMRMwEQYDVQQLFApsaXZlX2NlcnRzMREwDwYDVQQDFAhsaXZlX2FwaTEcMBoGCSqGSIb3DQEJARYNcmVAcGF5cGFsLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAwUdO3fxEzEtcnI7ZKZL412XvZPugoni7i7D7prCe0AtaHTc97CYgm7NsAtJyxNLixmhLV8pyIEaiHXWAh8fPKW+R017+EmXrr9EaquPmsVvTywAAE1PMNOKqo2kl4Gxiz9zZqIajOm1fZGWcGS0f5JQ2kBqNbvbg2/Za+GJ/qwUCAwEAAaOB7jCB6zAdBgNVHQ4EFgQUlp98u8ZvF71ZP1LXChvsENZklGswgbsGA1UdIwSBszCBsIAUlp98u8ZvF71ZP1LXChvsENZklGuhgZSkgZEwgY4xCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJDQTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEUMBIGA1UEChMLUGF5UGFsIEluYy4xEzARBgNVBAsUCmxpdmVfY2VydHMxETAPBgNVBAMUCGxpdmVfYXBpMRwwGgYJKoZIhvcNAQkBFg1yZUBwYXlwYWwuY29tggEAMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADgYEAgV86VpqAWuXvX6Oro4qJ1tYVIT5DgWpE692Ag422H7yRIr/9j/iKG4Thia/Oflx4TdL+IFJBAyPK9v6zZNZtBgPBynXb048hsP16l2vi0k5Q2JKiPDsEfBhGI+HnxLXEaUWAcVfCsQFvd2A1sxRr67ip5y2wwBelUecP3AjJ+YcxggGaMIIBlgIBATCBlDCBjjELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAkNBMRYwFAYDVQQHEw1Nb3VudGFpbi\r
-BWaWV3MRQwEgYDVQQKEwtQYXlQYWwgSW5jLjETMBEGA1UECxQKbGl2ZV9jZXJ0czERMA8GA1UEAxQIbGl2ZV9hcGkxHDAaBgkqhkiG9w0BCQEWDXJlQHBheXBhbC5jb20CAQAwCQYFKw4DAhoFAKBdMBgGCSqGSIb3DQEJAzELBgkqhkiG9w0BBwEwHAYJKoZIhvcNAQkFMQ8XDTA1MDgwMTE5NDQ0NlowIwYJKoZIhvcNAQkEMRYEFKLDwHJFsU6L329159saLBrfszYcMA0GCSqGSIb3DQEBAQUABIGAe4Mjshnc1RvJU9zF6nL8zPJ+nHO2ct1CbS1WFkQMWvh2NTwlIVSZFWSLJQZ32kNoyseoxUvE587qdBKyMOATXjchDeMr1y815+GWE6Ffqw3rWw/ytfVEtEJd4yUUq0gHqFACul4nWM5zP5A3zkLZEVN3gAmX1eLbMIcSCKuVafM=-----END PKCS7-----" />\r
-    </div>\r
-</form>\r
-\r
-<p id="compliance">\r
-    <a href="http://validator.w3.org"><img src="http://www.w3.org/Icons/valid-xhtml10" alt="Valid XHTML 1.0!" height="31" width="88" /></a>\r
-    <a href="http://jigsaw.w3.org/css-validator"><img id="valid-css" src="http://jigsaw.w3.org/css-validator/images/vcss" alt="Valid CSS!" /></a>\r
-</p>\r
-\r
-<p id="copyright">Copyright &copy; 2005-2006 Dan Moulding</p>\r
-\r
-</div> <!-- #content -->\r
-\r
-</body>\r
-\r
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" dir="ltr">
+
+<head>
+    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
+
+    <style title="Visual Leak Detector" type="text/css" media="screen,print">
+        body {
+            margin: 0;
+            font-family: verdana, sans-serif;
+        }
+
+        #masthead {
+            border-width: 0 0 1px 0;
+            border-style: solid;
+            border-color: #808080;
+            color: #ffffff;
+            background-color: #3569cc;
+        }
+
+        #content {
+            margin: 1em 1em 1em 1em;
+            font-size: 10pt;
+        }
+
+        #toc {
+            float: right;
+            color: #000000;
+            background-color: #ffeda5;
+        }
+
+        h1 {
+            margin: 0 0 0 0;
+            padding: 0.5em 1em 0 1em;
+            text-align: right;
+            font-size: 24pt;
+            font-family: arial, sans-serif;
+        }
+
+        h2 {
+            margin-top: 0;
+            border-width: 2px;
+            border-style: solid;
+            border-color: #3569cc;
+            padding-left: 1em;
+            font-size: 16pt;
+            font-family: "trebuchet ms", sans-serif;
+            letter-spacing: -1pt;
+            color: #000000;
+            background-color: #6599fc;
+        }
+
+        h3 {
+            font-size: 11pt;
+        }
+
+        li {
+            margin-bottom: 1em;
+        }
+
+        #toc h2 {
+            margin: 0;
+            border-width: 2px 2px 2px 0;
+            border-style: solid;
+            border-color: #6599fc;
+            text-align: center;
+            color: #ffffff;
+            background-color: #3569cc;
+        }
+
+        #toc ul {
+            margin-left: 0;
+            padding: 0;
+            list-style: none;
+        }
+
+        #toc li {
+            margin: 1em;
+        }
+
+        a {
+            color: #0000ff;
+            background-color: inherit;
+            text-decoration:none;
+        }
+
+        a:hover {
+            text-decoration: underline;
+        }
+
+        a:visited {
+            color: #0000ff;
+            background-color: inherit;
+        }
+
+        .api {
+            font-size: 12pt;
+            font-weight: bold;
+        }
+
+        .code {
+            font-family: "courier new", monospace;
+            color: #000000;
+            background-color: #e0e0e0;
+        }
+
+        .filename {
+            font-style: italic;
+        }
+
+        .function {
+            font-style: italic;
+        }
+
+        .note {
+            margin-left: 2em;
+        }
+
+        .operator {
+            font-style: italic;
+        }
+
+        .option {
+            font-size: 10pt;
+            font-weight: bold;
+        }
+
+        ul.vcsearchpath {
+            border-width: 1px;
+            border-style: dashed;
+            border-color: #000000;
+            color: #000000;
+            background-color: #ffeda5;
+            list-style: none;
+        }
+
+        ul.vcsearchpath li {
+            margin-bottom: 0;
+        }
+
+        #slogan {
+            margin-bottom: 0;
+            padding: 0 1em 1em 1em;
+            border-width: 0 0 1px 0;
+            border-style: solid;
+            border-color: #404040;
+            text-align: right;
+            font-size: larger;
+            font-style: italic;
+            color: #6599fc;
+            background-color: inherit;
+        }
+
+        #copyright {
+            text-align: right;
+            font-family: georgia, serif;
+            color: #808080;
+            background-color: inherit;
+        }
+
+        #compliance {
+            text-align: right;
+        }
+
+        #compliance img {
+            border: 0;
+        }
+        
+        blockquote {
+            font-style: italic;
+        }
+
+        form {
+            margin: 20px;
+        }
+    </style>
+
+    <title>Visual Leak Detector (Beta)</title>
+
+</head>
+
+
+
+
+<body>
+
+<div id="masthead">
+
+<h1>Visual&nbsp;Leak&nbsp;Detector&nbsp;1.9h (Beta)</h1>
+
+<p id="slogan">Enhanced Memory Leak Detection for Visual&nbsp;C++</p>
+
+</div> <!-- #masthead -->
+
+
+
+
+<div id="content">
+
+<div id="toc">
+
+<h2>Table of Contents</h2>
+
+<ul>
+    <li><a href="#intro">Introduction</a></li>
+
+    <li><a href="#use">Using Visual&nbsp;Leak&nbsp;Detector</a></li>
+
+    <li><a href="#configure">Configuration Options</a></li>
+
+    <li><a href="#control">Controlling Leak Detection at Runtime</a></li>
+
+    <li><a href="#build">Building Visual&nbsp;Leak&nbsp;Detector from Source</a></li>
+
+    <li><a href="#x64">Windows x64 Support</a></li>
+
+    <li><a href="#faq">Frequently Asked Questions</a></li>
+
+    <li><a href="#restrictions">Known Restrictions</a></li>
+
+    <li><a href="#contibuting">Contributing</a></li>
+
+    <li><a href="#license">License</a></li>
+
+    <li><a href="#contact">Contacting the Author</a></li>
+
+    <li><a href="#help-wanted">Additional Developers Wanted</a></li>
+</ul>
+
+</div> <!-- #toc -->
+
+
+
+
+<h2 id="intro">Introduction</h2>
+
+<p>Visual&nbsp;C++ provides built-in memory leak detection, but its capabilities are minimal at best. This memory leak
+   detector was created as a free alternative to the built-in memory leak detector provided with Visual&nbsp;C++. Here
+   are some of Visual&nbsp;Leak&nbsp;Detector's features, none of which exist in the built-in detector:</p>
+
+<ul>
+    <li>Provides a complete stack trace for each leaked block, including source file and line number information when
+        available.</li>
+
+    <li>Detects most, if not all, types of in-process memory leaks including COM-based leaks, and pure Win32 heap-based
+    leaks.</li>
+
+    <li>Selected modules (DLLs or even the main EXE) can be excluded from leak detection.</li>
+
+    <li>Provides complete data dumps (in hex and ASCII) of leaked blocks.</li>
+
+    <li>Customizable memory leak report: can be saved to a file or sent to the debugger and can include a variable level
+    of detail.</li>
+</ul>
+
+<p>Other after-market leak detectors for Visual&nbsp;C++ are already available. But most of the really popular ones,
+   like Purify and BoundsChecker, are very expensive. A few free alternatives exist, but they're often too intrusive,
+   restrictive, or unreliable. Visual&nbsp;Leak&nbsp;Detector is currently the only freely available memory leak
+   detector for Visual C++ that provides all of the above professional-level features packaged neatly in an easy-to-use
+   library.</p>
+
+<p>Visual Leak Detector is <a href="#license">licensed</a> free of charge as a service to the Windows developer
+   community. If you find it to be useful and would like to just say "Thanks!", or you think it stinks and would like to
+   say "This thing sucks!", please feel free to <a href="mailto:dmoulding@gmail.com">drop me a note</a>. Or, if you'd
+   prefer, you can <a href="#contact">contribute a small donation</a>. Both are very appreciated.</p>
+
+
+
+
+<h2 id="use">Using Visual&nbsp;Leak&nbsp;Detector</h2>
+
+<p>This section briefly describes the basics of using Visual&nbsp;Leak&nbsp;Detector (VLD).</p>
+
+<p><strong>Important! :</strong> Before using VLD with any Visual C++ project, you must first add the Visual Leak
+   Detector include and library directories to the Visual C++ include and library directory search paths:</p>
+
+<ul>
+    <li><strong>Visual&nbsp;C++ 8 and 9</strong>: Go to Tools -> Options -> Projects and Solutions -> VC++ Directories.
+        Select "Include files" from the "Show Directories For" drop-down menu. Add the
+        <span class="filename">include</span> subdirectory from the Visual Leak Detector installation directory. Move it
+        to the bottom of the list. Then select "Library files" from the drop-down menu and add the
+        <span class="filename">lib</span> subdirectory from the Visual Leak Detector installation directory. Again, move
+        it to the bottom of the list.</li>
+        
+    <li><strong>Visual&nbsp;C++ 7</strong>: Go to Project Properties -> C/C++ -> General -> Additional Include
+        Directories and add the <span class="filename">include</span> subdirectory from the Visual Leak Detector
+        installation directory. Move it to the bottom of the list. Then select Additional Library Directories and add
+        the <span class="filename">lib</span> subdirectory from the Visual Leak Detector installation directory. Again,
+        move it to the bottom of the list.</li>
+
+    <li><strong>Visual&nbsp;C++ 6</strong>: Go to Tools -> Options -> Directories. Select "Include files" from
+        the "Show Directories For" drop-down menu. Add the <span class="filename">include</span> subdirectory
+        from the Visual Leak Detector installation directory. Move it to the bottom of the list. Then select "Library
+        files" from the drop-down menu and add the <span class="filename">lib</span> subdirectory from the Visual Leak
+        Detector installation directory. Again, move it to the bottom of the list.</li>
+</ul>
+        
+<p>To use VLD with your project, follow these simple steps:</p>
+
+<ol>
+    <li>In at least one C/C++ source file from your program, include the <span class="filename">vld.h</span> header
+        file. It should not matter which file you add the include statement to. It also should not matter in what order
+        the header is included in relation to other headers. The only exception is
+        <span class="filename">stdafx.h</span> (or any other precompiled header). A precompiled header, such as
+        <span class="filename">stdafx.h</span>, must always be the first header included in a source file, so
+        <span class="filename">vld.h</span> must be included after any precompiled headers.</li>
+
+    <li>If your program contains one or more DLLs that you would also like to check for memory leaks, then also include
+        <span class="filename">vld.h</span> in at least one source file from each DLL to be included in leak
+        detection.</li>
+
+    <li>Build the debug version of your program.</li>
+</ol>
+
+<p class="note"><strong>Note:</strong> Unlike earlier (pre-1.9) versions of VLD, it is now acceptable to include
+   <span class="filename">vld.h</span> in every source file, or to include it in a common header that is included by
+   many or all source files. Only one copy of the VLD code will be loaded into the process, regardless of how many
+   source files include <span class="filename">vld.h</span>.</p>
+
+<p>VLD will detect memory leaks in your program whenever you run the debug version. When you run the program under the
+   Visual&nbsp;C++ debugger, a report of all the memory leaks detected will be displayed in the debugger's output window
+   when your program exits (the report can optionally be saved to a file instead, see
+   <span class="option">ReportFile</span> under <a href="#configure">Configuration Options</a>). Double-clicking on a
+   source file's line number in the memory leak report will take you to that file and line in the editor window,
+   allowing easy navigation of the code path leading up to the allocation that resulted in the memory leak.</p>
+
+<p class="note"><strong>Note:</strong> When you build release versions of your program, VLD will not be linked into the
+   executable. So it is safe to leave <span class="filename">vld.h</span> included in your source files when doing
+   release builds. Doing so will not result in any performance degradation or any other undesirable overhead.</p>
+
+
+
+
+<h2 id="configure">Configuration Options</h2>
+
+<p>There are a several configuration options that control specific aspects of VLD's operation. These configuration
+   options are stored in the <span class="filename">vld.ini</span> configuration file. By default, the configuration
+   file should be in the Visual Leak Detector installation directory. However, the configuration file can be copied to
+   the program's working directory, in which case the configuration settings in that copy of
+   <span class="filename">vld.ini</span> will apply only when debugging that one program.</p>
+
+<dl>
+    <dt class="option">VLD</dt>
+    <dd>
+        <p>This option acts as a master on/off switch. By default, this option is set to "on". To <em>completely
+        disable</em> Visual Leak Detector at runtime, set this option to "off". When VLD is turned off using this
+        option, it will do nothing but print a message to the debugger indicating that it has been turned off.</p>
+    </dd>
+    
+    <dt class="option">AggregateDuplicates</dt>
+    <dd>
+        <p>Normally, VLD displays each individual leaked block in detail. Setting this option to "yes" will make VLD
+           aggregate all leaks that share the same size and call stack under a single entry in the memory leak report.
+           Only the first leaked block will be reported in detail. No other identical leaks will be displayed. Instead,
+           a tally showing the total number of leaks matching that size and call stack will be shown. This can be useful
+           if there are only a few sources of leaks, but those few sources are repeatedly leaking a very large number of
+           memory blocks.</p>
+    </dd>
+
+    <dt class="option">ForceIncludeModules</dt>
+    <dd>
+        <p>In some rare cases, it may be necessary to include a module in leak detection, but it may not be possible to
+           include <span class="filename">vld.h</span> in any of the module's sources. In such cases, this option can be
+           used to force VLD to include those modules in leak detection. List the names of the modules (DLLs) to be
+           forcefully included in leak detection. If you do use this option, it's advisable to also add
+           <span class="filename">vld.lib</span> to the list of library modules in the linker options of your project's
+           settings.</p>
+
+        <p class="note"><strong>Caution:</strong> Use this option only when absolutely necessary. In some situations,
+           use of this option may result in unpredictable behavior including false leak reports and/or crashes. It's
+           best to stay away from this option unless you are sure you understand what you are doing.</p>
+    </dd>
+
+    <dt class="option">MaxDataDump</dt>
+    <dd>
+        <p>Set this option to an integer value to limit the amount of data displayed in memory block data dumps. When
+           this number of bytes of data have been dumped, the dump will stop. This can be useful if any of the leaked
+           blocks are very large and the debugger's output window becomes too cluttered. You can set this option to 0
+           (zero) if you want to suppress data dumps altogether.</p>
+    </dd>
+
+    <dt class="option">MaxTraceFrames</dt>
+    <dd>
+        <p>By default, VLD will trace the call stack for each allocated block as far back as possible. Each frame traced
+           adds additional overhead (in both CPU time and memory usage) to your debug executable. If you'd like to limit
+           this overhead, you can define this macro to an integer value. The stack trace will stop when it has traced
+           this number of frames. The frame count may include some of the "internal" frames which, by default, are not
+           displayed in the debugger's output window (see <span class="option">TraceInternalFrames</span> below). In
+           some cases there may be about three or four "internal" frames at the beginning of the call stack. Keep this
+           in mind when using this macro, or you may not see the number of frames you expect.</p>
+    </dd>
+
+    <dt class="option">ReportEncoding</dt>
+    <dd>
+        <p>When the memory leak report is saved to a file, the report may optionally be Unicode encoded instead of using
+           the default ASCII encoding. This might be useful if the data contained in leaked blocks is likely to consist
+           of Unicode text. Set this option to "unicode" to generate a Unicode encoded report.</p>
+    </dd>
+
+    <dt class="option">ReportFile</dt>
+    <dd>
+        <p>Use this option to specify the name and location of the file in which to save the memory leak report when
+           using a file as the report destination, as specified by the <span class="option">ReportTo</span> option. If
+           no file is specified here, then VLD will save the report in a file named "memory_leak_report.txt" in the
+           working directory of the program.</p>
+    </dd>
+
+    <dt class="option">ReportTo</dt>
+    <dd>
+        <p>The memory leak report may be sent to a file in addition to, or instead of, the debugger. Use this option to
+           specify which type of destination to use. Specify one of "debugger" (the default), "file", or "both".</p>
+    </dd>
+
+    <dt class="option">SelfTest</dt>
+    <dd>
+        <p>VLD has the ability to check itself for memory leaks. This feature is always active. Every time you run VLD,
+           in addition to checking your own program for memory leaks, it is also checking itself for leaks. Setting this
+           option to "on" forces VLD to intentionally leak a small amount of memory: a 21-character block filled with
+           the text "Memory Leak Self-Test". This provides a way to test VLD's ability to check itself for memory leaks
+           and verify that this capability is working correctly. This option is usually only useful for debugging VLD
+           itself.</p>
+    </dd>
+    
+    <dt class="option">SlowDebuggerDump</dt>
+    <dd>
+        <p>If enabled, this option causes Visual Leak Detector to write the memory leak report to the debugger's output
+           window at a slower than normal rate. This option is specifically designed to work around a known issue with
+           some older versions of Visual Studio where some data sent to the output window might be lost if it is sent
+           too quickly. If you notice that some information seems to be missing from the memory leak report, try turning
+           this on.</p>
+    </dd>
+
+    <dt class="option">StackWalkMethod</dt>
+    <dd>
+        <p>Selects the method to be used for walking the stack to obtain call stacks for allocated memory blocks. The
+           default "fast" method may not always be able to successfully trace completely through all call stacks. In
+           such cases, the "safe" method may prove to be more reliable in obtaining the full stack trace. The
+           disadvantage with the "safe" method is that it is significantly slower than the "fast" method and will
+           probably result in very noticeable performance degradation of the program being debugged. In most cases it
+           should be okay to leave this option set to "fast". If you experience problems getting VLD to show call
+           stacks, you can try setting this option to "safe".</p>
+
+        <p>If you do use the "safe" method, and notice a significant performance decrease, you may want to consider
+           using the <span class="option">MaxTraceFrames</span> option to limit the number of frames traced to a
+           relatively small number. This can reduce the amount of time spent tracing the stack by a very large
+           amount.</p>
+    </dd>
+
+    <dt class="option">StartDisabled</dt>
+    <dd>
+        <p>Set this option to "yes" to disable memory leak detection initially. This can be useful if you need to be
+           able to selectively enable memory leak detection from runtime, without needing to rebuild the executable;
+           however, this option should be used with caution. Any memory leaks that may occur before memory leak
+           detection is enabled at runtime will go undetected. For example, if the constructor of some global variable
+           allocates memory before execution reaches a subsequent call to <span class="function">VLDEnable</span>, then
+           VLD will not be able to detect if the memory allocated by the global variable is never freed. Refer to the
+           following section on <a href="#control">controlling leak detection at runtime</a> for details on using the
+           runtime APIs which can be useful in conjunction with this option.</p>
+    </dd>
+
+    <dt class="option">TraceInternalFrames</dt>
+    <dd>
+        <p>This option determines whether or not all frames of the call stack, including frames internal to the heap,
+           are traced. There will always be a number of frames on the call stack which are internal to Visual Leak
+           Detector and C/C++ or Win32 heap APIs that aren't generally useful for determining the cause of a leak.
+           Normally these frames are skipped during the stack trace, which somewhat reduces the time spent tracing and
+           amount of data collected and stored in memory. Including all frames in the stack trace, all the way down into
+           VLD's own code can, however, be useful for debugging VLD itself.</p>
+    </dd>
+</dl>
+
+
+
+
+<h2 id="control">Controlling Leak Detection at Runtime</h2>
+
+<p>Using the default configuration, VLD's memory leak detection will be enabled during the entire run of your program.
+   In certain scenarios it may be desirable to selectively disable memory leak detection in certain segments of your
+   code. VLD provides simple APIs for controlling the state of memory leak detection at runtime. To access these APIs,
+   include <span class="filename">vld.h</span> in the source file that needs to use them.</p>
+
+<dl>
+    <dt class="api">VLDDisable</dt>
+    <dd>
+        <p>This function disables memory leak detection. After calling this function, memory leak detection will remain
+           disabled until it is explicitly re-enabled via a call to VLDEnable.</p>
+
+        <pre class="code">void VLDDisable (void);</pre>
+
+        <h3>Arguments:</h3>
+
+        <p>This function accepts no arguments.</p>
+
+        <h3>Return Value:</h3>
+
+        <p>None (this function always succeeds).</p>
+
+        <h3>Notes:</h3>
+
+        <p>This function controls memory leak detection on a per-thread basis. In other words, calling this function
+           disables memory leak detection for only the thread that called the function. Memory leak detection will
+           remain enabled for any other threads in the same process. This insulates the programmer from having to
+           synchronize multiple threads that disable and enable memory leak detection. However, note also that this
+           means that in order to disable memory leak detection process-wide, this function must be called from every
+           thread in the process.</p>
+    </dd>
+
+
+    <dt class="api">VLDEnable</dt>
+    <dd>
+        <p>This function enables memory leak detection if it was previously disabled. After calling this function,
+           memory leak detection will remain enabled unless it is explicitly disabled again via a call to
+           VLDDisable().</p>
+
+        <pre class="code">void VLDEnable (void);</pre>
+
+        <h3>Arguments:</h3>
+
+        <p>This function accepts no arguments.</p>
+
+        <h3>Return Value:</h3>
+
+        <p>None (this function always succeeds).</p>
+
+        <h3>Notes:</h3>
+
+        <p>This function controls memory leak detection on a per-thread basis. See the remarks for
+           <span class="function">VLDDisable</span> regarding multithreading and memory leak detection for details.
+           Those same concepts also apply to this function.</p>
+    </dd>
+</dl>
+
+
+
+
+<h2 id="build">Building Visual&nbsp;Leak&nbsp;Detector from Source</h2>
+
+<p>Because Visual&nbsp;Leak&nbsp;Detector is open source, it can be built from source if you want to tweak it to your
+   liking. As of Visual Studio 2008, the source can usually be built out-of-the-box without downloading or installing
+   any other tools. If you are using Visual Studio 2008 (or later), you can skip ahead to
+   <a href="#exec">Executing Your Built vld.dll</a>.
+
+<p>Users with older versions of Visual Studio should continue reading here and follow the instructions in the next
+   subsection.</p>
+
+<h3>For Older Versions of Visual Studio</h3>
+
+<p>The most difficult part about building VLD from source is getting your build environment correctly set up.
+   But if you follow these instructions carefully, the  process should be fairly painless.</p>
+
+<ol>
+    <li>VLD depends on the Debug Help Library. This library is part of
+        <a href="http://www.microsoft.com/whdc/devtools/debugging/default.mspx">Debugging Tools for Windows</a> (DTfW).
+        Download and install DTfW in order to install the required headers and libraries. I recommend installing version
+        6.5 of DTfW, or later. Newer versions tend to  work fine, but older versions will probably not work. Be sure to
+        manually select to install the SDK files during the DTfW installation or the headers and libraries will not be
+        installed (they are not always installed with a default installation).</li>
+
+    <li>Visual&nbsp;C++ will need to be made aware of where it can find the Debug Help Library header and library files.
+        Add the <span class="filename">sdk\inc</span> and <span class="filename">sdk\lib</span> subdirectories from the
+        DTfW installation directory to the include and library search paths in Visual&nbsp;C++. (See the section above
+        on <a href="#use">using Visual Leak Detector</a> on instructions for adding to these search paths).
+    </li>
+
+    <li>VLD also requires a reasonably up-to-date Platform&nbsp;SDK. It is known to work with the latest SDK (as of this
+        writing) which is the Windows Server 2003 R2 SDK. It should also work with earlier SDKs, such as the Windows XP
+        SP2 SDK or may even work with SDKs as old as the February 2003 SDK. If in doubt,
+        <a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=A55B6B43-E24F-4EA3-A93E-40C0EC4F68E5&amp;displaylang=en">update
+        your Platform&nbsp;SDK</a> to the latest version.</li>
+
+    <li>Again, Visual&nbsp;C++ will need to know where to find the Platform&nbsp;SDK headers and libraries. Add the
+        <span class="filename">Include</span> and <span class="filename">Lib</span> subdirectories from the
+        Platform&nbsp;SDK installation directory to the Include and Library search paths, respectively. The
+        Platform&nbsp;SDK directories should be placed just after the DTfW directories.</li>
+</ol>
+
+<p>To summarize, your Visual&nbsp;C++ include search path should look something like this:</p>
+
+<ul class="vcsearchpath">
+   <li>C:\Program&nbsp;Files\Debugging&nbsp;Tools&nbsp;for&nbsp;Windows\sdk\inc</li>
+
+   <li>C:\Program&nbsp;Files\Microsoft&nbsp;Platform&nbsp;SDK\Include</li>
+
+   <li>C:\Program&nbsp;Files\Microsoft&nbsp;Visual&nbsp;Studio\VCx\Include</li>
+   
+   <li>...</li>
+</ul>
+
+<p>And your Visual&nbsp;C++ library search path should look like this:</p>
+
+<ul class="vcsearchpath">
+   <li>C:\Program&nbsp;Files\Debugging&nbsp;Tools&nbsp;for&nbsp;Windows\sdk\lib</li>
+
+   <li>C:\Program&nbsp;Files\Microsoft&nbsp;Platform&nbsp;SDK\Lib</li>
+
+   <li>C:\Program&nbsp;Files\Microsoft&nbsp;Visual&nbsp;Studio\VCx\Lib</li>
+   
+   <li>...</li>
+</ul>
+
+<p>In the above examples, "VCx" could be "VC", "VC7", or "VC98" (or possibly other values) depending on which version of
+   Visual Studio you have installed. Also, the name of your Platform&nbsp;SDK directory will probably be different from
+   the example depending on which version of the Platform&nbsp;SDK you have installed.</p>
+
+<p>Once you have completed all of the above steps, your build environment should be ready. To build VLD, just open the
+   <span class="filename">vld.sln</span> solution file and do a full build.</p>
+
+<h3 id="exec">Executing Your Built vld.dll</h3>
+
+<p>When actually running the built project, <span class="filename">vld.dll</span> will expect to find the Debug Help
+   Library as a private assembly. The private assembly must be located in the same directory as
+   <span class="filename">vld.dll</span> (either the <span class="filename">Release</span> or
+   <span class="filename">Debug</span> directory by default). Otherwise, when VLD is loaded, an error message will pop
+   up indicating that the program failed to initialize, and you will see a message similar to the following in the
+   debugger's output window:</p>
+   <blockquote><p>LDR: LdrpWalkImportDescriptor() failed to probe C:\Projects\vld\Release\vld.dll for its manifest,
+   ntstatus 0xc0150002</p></blockquote>
+   
+<p>To ensure that <span class="filename">vld.dll</span> finds the required private assembly, you need to copy
+   <span class="filename">dbghelp.dll</span> and <span class="filename">Microsoft.DTfW.DHL.manifest</span> to the
+   same directory that <span class="filename">vld.dll</span> is in.</p>
+
+
+
+
+<h2 id="x64">Windows x64 Support</h2>
+
+<p>Currently VLD will not build on x64 due to limitations of the x64 compiler. Some efforts have been undertaken to
+   get it working in a 64-bit environment, but have not yet been successful. If you need 64-bit support and run into
+   problems trying to build the source in 64-bit mode, please <a href="mailto:dmoulding@gmail.com">let me know</a>.
+   I'll be glad to assist in getting the 64-bit code working properly, if at all possible.</p>
+
+
+
+
+<h2 id="faq">Frequently Asked Questions</h2>
+
+<dl>
+    <dt>When I try to compile my program with VLD, it fails and the compiler gives this error: <strong>Cannot open include file:
+    'vld.h': No such file or directory</strong>.</dt>
+    <dd>
+        <p>The compiler can't find the header file that VLD installed. This probably means that VLD's include
+        subdirectory has not been added to the Visual C++ include search path. See the section above about
+        <a href="#use">Using Visual Leak Detector</a> for instructions on how to add VLD's directories to the search
+        path.</p>
+    </dd>
+    <dt>In the memory leak report, the callstack contains many lines that say
+        <strong>"File and line number unvailable"</strong> or <strong>"Function name unavailable"</strong>.</dt>
+    <dd>
+        <p>This may mean that VLD couldn't find the symbol database for your program. The symbol database is ususally in
+           a file named <span class="filename">[my-program-name].pdb</span>. If this file is not located in the same
+           directory as the program itself, then VLD will probably not find it and can't show any file or function
+           names.</p>
+    </dd>
+</dl>
+
+
+
+
+<h2 id="restrictions">Known Restrictions</h2>
+
+<p>Known restrictions/limitations in this version of VLD include:</p>
+
+<ul>
+   <li>Memory allocations made through calls to functions loaded from a DLL using delayed loading may not be
+       detected.</li> 
+
+   <li>Support for programs that use MFC 7.0 or MFC 7.1 is not complete yet. Some memory leaks from such MFC-based
+       programs may not be detected. A possible workaround for this restriction is to try forcefully including the MFC
+       DLLs in memory leak detection, by setting the <span class="option">ForceIncludeModules</span> configuration
+       option to: "mfc70d.dll mfc71d.dll" and explicitly adding <span class="filename">vld.lib</span> as an input file
+       on the linker command line (can be added through project settings by adding it to the list of library modules in
+       the linker options). This restriction does not apply to programs that use MFC 4.2, MFC 8.0, or MFC 9.0, which are
+       all fully supported.</li>
+       
+   <li>Visual Leak Detector may report leaks internal to Visual Leak Detector if the main thread of the process
+       terminates while other threads are still running.</li>
+       
+   <li>On Windows 2000 and earlier operating systems, you may need to manually add the
+       <span class="filename">bin</span> subdirectory from the Visual Leak Detector installation directory to the system
+       PATH environment variable. Also, <span class="filename">dbghelp.dll</span> will probably need to be manually copied
+       to the directory where the program being debugged resides. Otherwise the system may not find the required DLLs when
+       running VLD.</li>
+       
+    <li>If more than one copy of the same C Runtime DLL is loaded in the process at the same time, then some leaks may
+        go undetected (note that loading more than one copy of the C Runtime DLL at the same time is probably a bad idea
+        to begin with).</li>
+</ul>
+
+
+
+<h2 id="contibuting">Contributing</h2>
+
+<p>I encourage developers who've added their own features, or fixed bugs they've found, to contribute to the project.
+   The full version-controlled source tree is available publicly via Git at the URL below. Feel free to clone from this
+   URL and submit patches for consideration for inclusion in future versions. You can also hop onto
+   <a href="http://github.com">GitHub</a> (accounts are free) and issue pull requests for changes that you've made and
+   would like to share.</p>
+
+<p>Git Repository URL: git://github.com/dmoulding/vld.git</p>
+
+<h2 id="license">License</h2>
+
+<p>Visual&nbsp;Leak&nbsp;Detector is distributed under the terms of the
+   <a href="http://www.gnu.org/copyleft/lesser.html">GNU Lesser General Public License</a>. This license allows you to
+   use the VLD library with your own programs without restriction. However, if you build a program (or another library)
+   that is <em>based</em> on the VLD source code, or uses parts of the VLD source code in it, then some restrictions
+   will apply. What this means is that you are free to ship and use the distributed version of the VLD DLL with regular
+   commercial programs. But if you create a modified version of VLD, that modified version must remain "free software".
+   See the <span class="filename"><a href="COPYING.txt">COPYING.txt</a></span> file for details.</p>
+
+<p>The Debug Help Library (<span class="filename">dbghelp.dll</span>) and Microsoft C Runtime Library
+   (<span class="filename">msvcr80.dll</span>) distributed with this software are not part of
+   Visual&nbsp;Leak&nbsp;Detector and are not covered under the terms of the GNU Lesser General Public License. They are
+   separately copyrighted works of Microsoft Corporation. Microsoft reserves all its rights to its copyrights in the
+   Debug Help Library and Microsoft C Runtime Library. Neither your use of the Visual&nbsp;Leak&nbsp;Detector software,
+   nor your license under the GNU Lesser General Public license grant you any rights to use the Debug Help Library or
+   Microsoft C Runtime Library in <strong>ANY WAY</strong> (for example, redistributing them) that would infringe upon
+   Microsoft Corporation's copyright in the Debug Help Library or Microsoft C Runtime Library.</p>
+
+<h3>NO WARRANTY</h3>
+
+<p>BECAUSE VISUAL LEAK DETECTOR ("THE SOFTWARE") IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE SOFTWARE, TO
+   THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER
+   PARTIES PROVIDE THE SOFTWARE "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT
+   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE
+   QUALITY AND PERFORMANCE OF THE SOFTWARE IS WITH YOU. SHOULD THE SOFTWARE PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL
+   NECESSARY SERVICING, REPAIR OR CORRECTION.</p>
+
+<p>IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY
+   WHO MAY MODIFY AND/OR REDISTRIBUTE THE SOFTWARE AS PERMITTED BY THE LICENSING TERMS SET FORTH ABOVE, BE LIABLE TO YOU
+   FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY
+   TO USE THE SOFTWARE (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED
+   BY YOU OR THIRD PARTIES OR A FAILURE OF THE SOFTWARE TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR
+   OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p>
+
+
+
+
+<h2 id="contact">Contacting the Author</h2>
+
+<p>Please forward any bug reports, questions, comments or suggestions to me at
+<a href="mailto:dmoulding@gmail.com">dmoulding@gmail.com.</a></p>
+
+<p>Donations to help support ongoing development of Visual Leak Detector are very appreciated!</p>
+
+<form action="https://www.paypal.com/cgi-bin/webscr" method="post">
+    <div>
+    <input type="hidden" name="cmd" value="_s-xclick" />
+    <input type="image" src="https://www.paypal.com/en_US/i/btn/x-click-but21.gif" name="submit" alt="Make payments with PayPal - it's fast, free and secure!" />
+    <input type="hidden" name="encrypted" value="-----BEGIN PKCS7-----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-----END PKCS7-----" />
+    </div>
+</form>
+
+
+
+<h2 id="help-wanted">Additional Developers Wanted</h2>
+
+<p>This project is looking for additional developers who have the time, knowledge, and talent, to help make VLD continue
+   to be a useful utility for the Windows developer community. If you feel that you or someone you know would be
+   interested in becoming an active member of the Visual Leak Detector development team, please let me know.</p>
+
+
+
+<p id="compliance">
+    <a href="http://validator.w3.org"><img src="http://www.w3.org/Icons/valid-xhtml10" alt="Valid XHTML 1.0!" height="31" width="88" /></a>
+    <a href="http://jigsaw.w3.org/css-validator"><img id="valid-css" src="http://jigsaw.w3.org/css-validator/images/vcss" alt="Valid CSS!" /></a>
+</p>
+
+
+
+<p id="copyright">Copyright &copy; 2005-2009 Dan Moulding</p>
+
+</div> <!-- #content -->
+
+</body>
+
 </html>
\ No newline at end of file