title: Possible heap corruption issue when deleting an object
body: <p>I'm working on a framework and have run into an issue. I noticed that I was leaking memory by not deleting an object. When I tried to delete this object just before exiting the application I get an error, this one to be exact:</p>
  <p><img src="https://i.stack.imgur.com/n9h0y.png" alt="Error on closing the application" /></p>
  <p>After I got this I grabbed <a href="http://www.microsoft.com/download/en/details.aspx?id=20028" rel="nofollow noreferrer">Application Verifier</a></p>
  <p>When running the code it set a breakpoint on the following piece of code:</p>
  <pre><code>PIXELFORMATDESCRIPTOR tPfd = { 
      sizeof(PIXELFORMATDESCRIPTOR), 
      1, 
      PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER,
      PFD_TYPE_RGBA, 
      32, 
      0, 0, 0, 0, 0, 0, 
      1, 
      0, 
      0, 0, 0, 0, 
      0, 
      24, 
      0, 
      0,
      PFD_MAIN_PLANE,
      0, 
      0, 0, 0
  };
  
  unsigned int tFormat = ChoosePixelFormat(g_WindowContext, &amp;tPfd);
  if( !tFormat ) {
      LOG( CRITICAL, &quot;Pixelformat could not be choosen.&quot; );
      return false;
  }
  </code></pre>
  <p>It set a breakpoint on the line with &quot;ChoosePixelFormat(g_WindowContext,&amp;tPfd);&quot; and had the following 'explanation' for it:</p>
  <blockquote>
  <p>VERIFIER STOP 00000301: pid 0x3689C: Invalid TLS index used for current stack trace.</p>
  <p><code>FFFFFFFF : Invalid TLS index.</code><br />
  <code>0000ABBA : Expected lower part of the index.</code><br />
  <code>00000000 : Not used.</code><br />
  <code>00000000 : Not used.</code></p>
  </blockquote>
  <p>I don't really get what is going on, the lines above these pieces of code are as follows:</p>
  <pre><code>g_Window = CreateWindowEx (
      0,
      PROJECT_NAME,                          // window class
      PROJECT_NAME,                          // window title
      tStyle,                          // visibility settings
      tX, tY,
      tW, tH,
      NULL, 
      NULL, 
      tWindowClass.hInstance, 
      NULL
  );
  
  if(!g_Window) {
      LOG( CRITICAL, &quot;Window could not be created.&quot; );
      return false;
  }
  
  g_WindowContext = GetDC(g_Window);
  if( !g_WindowContext ) {
      return false;
  }
  </code></pre>
  <p>The variables used here are:</p>
  <pre><code>HDC                     g_WindowContext;
  HWND                    g_Window;
  </code></pre>
  <p>The object I am trying to delete is nothing special, the object is not corrupt while the application is running. I can use the object, I've tried using all its functions and they all work as expected time after time. Just when I try to delete the object at the end it gives the error message. The object is deleted just below the main application loop when everything is cleaned up. Nothing is using it at this point nothing seems to be the problem, when setting a breakpoint the pointer to the object itself is valid as well.</p>
  <p>If anybody would be able to help me it would be greatly appreciated, if you need anymore information or pieces of code please let me know.</p>