<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
	<channel>
		<title>RSS Feed</title>
		<link>http://www.kbasm.com/feed.rss.html</link>
		<description></description>
		<generator>Ditto 1.0.2 powered by MODx CMS</generator>
		<language>en</language>
		<copyright>Invaluable programming technology of Delphi, Windows, Web, OOP, and others 2006</copyright>
		<ttl>120</ttl>
		<item>
			<title>Denomo for C++: an open source comprehensive memory and resource leak detection tool for BCB and VC</title>
			<link>http://www.kbasm.com/denomo-for-cpp.html</link>
			<description><![CDATA[ <h1>Denomo for C++: an open source comprehensive memory and resource leak detection tool for BCB and VC</h1>

It supports many useful features to help you to detect and locate the leak quickly. <br />
<br />

Version: 2.1.0 <br />
<br />
<div class="button">
<ul>
<li><a href="/download.html#denomocpp">download</a></li>
</ul>
</div>
<br /> <br />

<div class="plist">
<h3>Quick start</h3>

<h5>1, Modify you project's code. </h5> 
Include the unit "Denomo.h" in your project's source file. <br />

<h5>2, To run your project with Denomo, you must put DenomoCPP.dll to the exe directory. </h5> 

<h5>3, Compile and run your project. </h5> 

<h5>4, Run bin\LeakInspector to start monitoring. </h5> 

<h5>5, Click button "Inc Session Leak Begin". </h5> 

<h5>6, Do something you suspect has memory leak. </h5> 

<h5>7, Click button "Inc Session Leak End", then check the output text.</h5> 
</div> ]]></description>
			<pubDate>Mon, 09 Jun 2008 00:43:34 -0500</pubDate>
			<guid>http://www.kbasm.com/denomo-for-cpp.html</guid>
			<author>Wang Qi &lt;kbasm.com@gmail.com&gt;</author>
			</item>
		<item>
			<title>Use per-class allocator in Delphi program</title>
			<link>http://www.kbasm.com/delphi-per-class-allocator.html</link>
			<description><![CDATA[ <h1>Use per-class allocator in Delphi program</h1>

<b><a href="/download/perclassallocator.zip">Download source code</a></b> <br />
<br />

<b>Introduction:</b> <br />
<br />

If you ever know a little C++ knowledge, you may already know C++ allows to override the operators 'new' and 'delete' for any specified class to manage the memory in a different way than C ]]></description>
			<pubDate>Fri, 07 Mar 2008 07:01:22 -0600</pubDate>
			<guid>http://www.kbasm.com/delphi-per-class-allocator.html</guid>
			<author>Wang Qi &lt;kbasm.com@gmail.com&gt;</author>
			</item>
		<item>
			<title>Win32 CodeHook - an open source library for binary code hook and redirect for Win32 Delphi and C++</title>
			<link>http://www.kbasm.com/codehook.html</link>
			<description><![CDATA[ <h1>Win32 CodeHook - an open source library for binary code hook and redirect for Win32 Delphi and C++. </h1>

It supports some useful features to make code hooking a piece of cake. <br />
It's free and open source. The license is MPL. <br />
<br />

Current version is 1.0.0. <br />
<br />
<div class="button">
<ul>
<li><a href="/download.html#codehook">download</a></li>
</ul>
</div> ]]></description>
			<pubDate>Sat, 02 Feb 2008 07:01:41 -0600</pubDate>
			<guid>http://www.kbasm.com/codehook.html</guid>
			<author>Wang Qi &lt;kbasm.com@gmail.com&gt;</author>
			</item>
		<item>
			<title>Allocate objects on stack, at specified memory address, or through any memory manager</title>
			<link>http://www.kbasm.com/delphi-stack-local-object.html</link>
			<description><![CDATA[ <h1>Allocate objects on stack, at specified memory address, or through any memory manager</h1>

<a href="/download/localobject.zip">download the code and sample project. 7K zip file.</a> <br />
<br />

<b>Isn't it very cool to create objects on the stack, or in a specified memory buffer, or at a fixed memory location, or even through a highly optimized memory manager?</b> ]]></description>
			<pubDate>Fri, 01 Feb 2008 08:00:19 -0600</pubDate>
			<guid>http://www.kbasm.com/delphi-stack-local-object.html</guid>
			<author>Wang Qi &lt;kbasm.com@gmail.com&gt;</author>
			</item>
		<item>
			<title>A funny yet crazy extreme test on Delphi 7 compiler</title>
			<link>http://www.kbasm.com/delphi-compiler-extreme-test.html</link>
			<description><![CDATA[ <h1>See how Delphi compiles very huge source file!</h1>

<b>The test environment: </b><br />
Hardware: really poor. Pentium 4, maybe 2.4G HZ? Don't know. It's at least 3 or 4 years old! The RAM is 1G. <br />
Software: Delphi 7, I use the command line tool dcc32 to do the compile. OS is Wi ]]></description>
			<pubDate>Fri, 25 Jan 2008 02:02:56 -0600</pubDate>
			<guid>http://www.kbasm.com/delphi-compiler-extreme-test.html</guid>
			<author>Wang Qi &lt;kbasm.com@gmail.com&gt;</author>
			</item>
		<item>
			<title>Email obfuscator - an anti-spammer tool to obfuscate email addresses embedded in web pages</title>
			<link>http://www.kbasm.com/web-tool-email-obfuscator.html</link>
			<description><![CDATA[ <h1>Email obfuscator - an anti-spammer tool to obfuscate email addresses embedded in web pages, protect your email from spammer </h1>
<br />

<a href="/web-tool-email-obfuscator.html#tool">Start using the tool</a> <br />
<br />

This is a free online email address obfuscator tool to obscure the email address you entered and give you a ]]></description>
			<pubDate>Fri, 04 Jan 2008 09:46:12 -0600</pubDate>
			<guid>http://www.kbasm.com/web-tool-email-obfuscator.html</guid>
			<author>Wang Qi &lt;kbasm.com@gmail.com&gt;</author>
			</item>
		<item>
			<title>An effective algorithm to manage fixed length memory blocks</title>
			<link>http://www.kbasm.com/optimize-fixed-length-mm.html</link>
			<description><![CDATA[ <h1>An effective algorithm to manage fixed length memory blocks</h1>

<a href="/download.html#fixlenmm">download the sample code (6K)</a> <br />
The sample code shows how to implement this algorithm in Delphi and Java. <br />
<br />

In this article, I will introduce a simple but very effective and useful algorithm to dyn ]]></description>
			<pubDate>Sat, 29 Dec 2007 03:42:40 -0600</pubDate>
			<guid>http://www.kbasm.com/optimize-fixed-length-mm.html</guid>
			<author>Wang Qi &lt;kbasm.com@gmail.com&gt;</author>
			</item>
		<item>
			<title>Leak detection -- an introduction to session detection</title>
			<link>http://www.kbasm.com/denomo-introduce-session-detection.html</link>
			<description><![CDATA[ <h1>Leak detection -- an introduction to session detection </h1>

Leak detection is very important to any decent software. If your program has a trivial flaw to leak small memory blocks each minutes, it will end up with crashing the user's system eventually by eating up all o ]]></description>
			<pubDate>Thu, 13 Dec 2007 01:04:00 -0600</pubDate>
			<guid>http://www.kbasm.com/denomo-introduce-session-detection.html</guid>
			<author>Wang Qi &lt;kbasm.com@gmail.com&gt;</author>
			</item>
		<item>
			<title>An idea on detecting memory leak -- focus on leaking source location</title>
			<link>http://www.kbasm.com/denomo-new-idea-suppress-memory-leak.html</link>
			<description><![CDATA[ <h1>An idea on detecting memory leak -- focus on leaking source location</h1>

(Note: This article is a discussion on the new feature added to Denomo V1.0.3, but the concept discussed here is general and not limited to Denomo.) <br />
<br />

If my memory serves, several memory leak ]]></description>
			<pubDate>Sun, 09 Dec 2007 04:27:22 -0600</pubDate>
			<guid>http://www.kbasm.com/denomo-new-idea-suppress-memory-leak.html</guid>
			<author>Wang Qi &lt;kbasm.com@gmail.com&gt;</author>
			</item>
		<item>
			<title>Delphi Tip - .dsk file (Delphi Desktop File) saved by Delphi 2007 can&#039;t be opened by Delphi 7</title>
			<link>http://www.kbasm.com/delphi-tip-cannot-open-dsk-file.html</link>
			<description><![CDATA[ <h1>.dsk file (Delphi Desktop File) saved by Delphi 2007 can't be opened by Delphi 7</h1>
<br />

Because I had to test Denomo on at least both D2007 and D7, I found a really annoying backward compatible problem in D2007. <br />
If you save the project desktop in Delphi 2007, then wh ]]></description>
			<pubDate>Sun, 02 Dec 2007 06:58:01 -0600</pubDate>
			<guid>http://www.kbasm.com/delphi-tip-cannot-open-dsk-file.html</guid>
			<author>Wang Qi &lt;kbasm.com@gmail.com&gt;</author>
			</item>
		<item>
			<title>Be careful when using MMX or Float point instructions in Delphi 2007</title>
			<link>http://www.kbasm.com/delphi-fastcode-float-point-issue.html</link>
			<description><![CDATA[ Be careful when using MMX or Float point instructions in Delphi 2007 ]]></description>
			<pubDate>Sun, 18 Nov 2007 02:06:17 -0600</pubDate>
			<guid>http://www.kbasm.com/delphi-fastcode-float-point-issue.html</guid>
			<author>Wang Qi &lt;kbasm.com@gmail.com&gt;</author>
			</item>
		<item>
			<title>Denomo -- Memory and resource leak detection tool for Delphi</title>
			<link>http://www.kbasm.com/denomo.html</link>
			<description><![CDATA[ Denomo is an open source comprehensive memory leak detection tool for Delphi. <br />
It supports many useful features to help you to detect and locate the leak quickly. <br />
<br />

<a href="download.html#denomo">Download</a> <br />
<a href="denomo-faq.html">FAQs</a> <br />
<br />

<h2>Quick start</h2> <br />
<div class="plist">
<b>1, Modify you project's code.</b> <br />
Place the unit "Denomo.pas" as the very first unit under the "uses" section in your project's .dpr file. <br />
If you use another memory manager explicitly, e.g, FastMM, put the unit "Denomo.pas" just under the memory manager. <br />

<b>2, Change project options in Delphi project.</b> <br />
In Delphi, in your project to detect memory leak, go to menu Project->Options->Compiler, be sure "Optimization" is unchecked, and "Stack frames", "Debug information", "Reference info", "Definitions only", "Assertions", and "Use Debug DCUs" are checked. <br />

<b>3, Compile and run your project.</b> <br />

<b>4, Run binLeakInspector to start monitoring.</b> <br />

<b>5, Click button "Inc Session Leak Begin".</b> <br />

<b>6, Do something you suspect has memory leak.</b> <br />

<b>7, Click button "Inc Session Leak End", then check the output text.</b> <br />
</div>

<br />

<h2>Features and advantages</h2> <br />
<div class="plist">
<b>1, Low level memory leak detection.</b> <br />
Detect memory leak allocated by function GetMem (the kernel function of Delphi memory manager). <br />

<b>2, Object level memory leak detection.</b> <br />
Detect object leak allocated by object constructor. <br />

<b>3, Keep stack trace of the allocate functions.</b> <br />
Once any memory leaked, the stack trace can help you to locate the address where the leak is allocated. <br />

<b>4, Eliminate leaked child objects created in constructor.</b><br />
If any objects created in object A's constructor, then if A is leaked (not freed), the objects created in its constructor will not be reported as leak. <br />
This feature will significantly suppress the leak report amount so to make you focus on the objects that are really leaked.. <br />

<b>5, Leak detection during a certain session.</b> <br />
You can inspect the memory leak during a certain period rather than only monitor the whole program life. <br />

<b>6, Leak source locations.</b><br />
Denomo can report exact source information such as unit name, procedure name, line number, if JCL is used and TD32 debug information is available. <br />

<b>7, Leak report on program exit.</b> <br />
Just like many other memory leak detection tools do. <br />

<b>8, Free Twice detection.</b> <br />
If the program free a memory block that has been freed, Denomo can detect and report it. <br />

<b>9, Don't depend on any memory manager.</b> <br />
If the default memory manager is not compatible with leak detection, Denomo also has a simple Windows heap based memory manager with it. <br />

<b>10, Works on Delphi 6, Delphi 7 and Delphi 2007.</b> <br />
Other versions Delphi are not tested on. You will be much appreciated if you test this work with Delphi 5, Delphi 2005, 2006, and any other 32 bits Delphi versions. <br />
</div>

<br />

Denomo has been test on: Delphi 6, Delphi 7, Delphi 2007, object allocation heavy application (more than 100K objects are allocated). <br />
Denomo has NOT been test on: Delphi 3-5, Delphi 2005, Delphi 2006, thread heavy application (many threads and each thread allocates or frees memory frequently. <br />
If you can help me to test in the environment that has not been test, much credit will give you. <br />

<br />
 ]]></description>
			<pubDate>Sat, 03 Nov 2007 00:22:30 -0500</pubDate>
			<guid>http://www.kbasm.com/denomo.html</guid>
			<author>Wang Qi &lt;kbasm.com@gmail.com&gt;</author>
			</item>
	</channel>
</rss>