title: What do the different columns in the "!heap -flt -s xxxx" windbg command represent
body: <p>I've been doing some work on high memory issues, and I've been doing a lot of heap analysis in windbg, and I was curious what the different columns really mean in "!heap -flt -s xxxx" command. </p>
  
  <p>I read <a href="https://stackoverflow.com/questions/2706634/what-do-the-size-numbers-mean-in-the-windbg-heap-output">What do the &#39;size&#39; numbers mean in the windbg !heap output?</a>, and I looked in my "Windows Internals" book, but I still had a bunch of questions. So the columns and my questions are below.</p>
  
  <pre><code>**HEAP_ENTRY** - What does this pointer really point to? How is it different than UserPtr?
  **Size** - What does this size mean? How is it different than UserSize?
  **Prev** - This just appears to be the negative offset to get to the previous heap entry. Still not sure exactly how it's used.
  **Flags** - Is there any documentation on these flags?
  **UserPtr** - What is the user pointer? In all cases I've seen it's always 8 bytes higher than the HEAP_ENTRY, but I don't really know what it points to.
  **UserSize** - This appears to be the size of the actual allocation.
  **state** - This just tells you what state of this heap entry is (free, busy, etc....)
  
  Example:
  HEAP_ENTRY Size Prev Flags    UserPtr UserSize - state
    0015eeb0 0044 0000  [07]   0015eeb8    00204 - (busy)
  </code></pre>