Question: Is there any reason for a program to leak when compiled in Debug mode and not in release?

(Debug means debug informations, and compiler optimization disabled, Release means no debug info / full optimization)

That's what it seems to do but I can't figure out why. Btw purify is not being helpful here

Answer: 
A lot of pointer type errors, including memory leaks, can *seem* to appear or disappear when switching between debug and release mode. A couple of reasons might be:

* Conditional code compiled in one version or the other
* Memory locations of things move around
* Special formatting of uninitialized data in the debug version
Give a try to [User Mode Dump Heap](http://support.microsoft.com/kb/268343) which comes with [Debugging Tools for Windows](http://www.microsoft.com/whdc/Devtools/Debugging/default.mspx), also take a look at what [Application Verifier](http://www.microsoft.com/downloads/details.aspx?familyid=c4a25ab9-649d-4a1b-b4a7-c9d8b095df18&displaylang=en) might have to say. All of those tools are extremely powerful, highly recommend.

Otherwise, unless you have leaking code, which is `#ifdef`-ed, I see no reason for Debug build to leak, while Release is fine.