well, since a few months ago when I finally learned the basic concepts of pointers and memory addresses, I have chose to delve deeper into the subject, since since I have learned how to properly use them I can't seem to stop.
anyways I've been working on a program where I am beginning to think the most efficient design would involve a linked list, so I found some great papers from the Stanford University CS library. one of which, "PointersAndMemory" has to be the best paper on pointers I have read yet, which I wish I had have found a few months ago.
it explains heap memory management, and mentions that if a program allocates memory on the heap but fails to deallocate that memory, that it is a memory leak. it also mentions that most compilers have a "heap debugging" utility which adds debugging code to a program to track every allocation and deallocation. I am just wondering if this is what the compiler does when I choose to compile code in "Debug" build configuration in compilers such as MSVC++?
the reason why I ask this is because I don't pay much attention to the Debug build config, mainly because it tends to make substantially larger executables than the Release build config. heap debugging code would explain the size difference, but I don't see how it could make that much of a size difference, especially in programs that do little if any allocating on the heap.
so generally my question is what is happening when I choose to compile my code in "Debug" build configuration? what is the compiler doing that it doesn't do when I choose to compile in "Release" build configuration?
thanks in advance.