title: What's all this uncommitted, reserved memory in my process?
body: <p>I'm using VMMap from SysInternals to look at memory allocated by my Win32 C++ process on WinXP, and I see a bunch of allocations where portions of the allocated memory are reserved but not committed. As far as I can tell, from my reading and testing, all of the common memory allocators (e.g., malloc, new, LocalAlloc, GlobalAlloc) used in a C++ program always allocate fully committed blocks of memory.
  Heaps are a common example of code that reserves memory but doesn't commit it until needed.  I suspect that some of these blocks are Windows/CRT heaps, but there appears to be more of these types of blocks than I would expect for heaps.  I see on the order of 30 of these blocks in my process, between 64k and 8MB in size, and I know that my code never intentionally calls VirtualAlloc to allocate reserved, uncommitted memory.</p>
  
  <p>Here are a couple of examples from VMMap: <a href="http://www.flickr.com/photos/95123032@N00/5280550393/" rel="noreferrer">http://www.flickr.com/photos/95123032@N00/5280550393/</a></p>
  
  <p>What else would allocate such blocks of memory, where much of it is reserved but not committed?  Would it make sense that my process has 30 heaps?  Thanks.</p>