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:

After I got this I grabbed Application Verifier
When running the code it set a breakpoint on the following piece of 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, &tPfd);
if( !tFormat ) {
LOG( CRITICAL, "Pixelformat could not be choosen." );
return false;
}
It set a breakpoint on the line with "ChoosePixelFormat(g_WindowContext,&tPfd);" and had the following ‘explanation’ for it:
VERIFIER STOP 00000301: pid 0x3689C: Invalid TLS index used for current stack trace.
FFFFFFFF : Invalid TLS index.
0000ABBA : Expected lower part of the index.
00000000 : Not used.
00000000 : Not used.
I don’t really get what is going on, the lines above these pieces of code are as follows:
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, "Window could not be created." );
return false;
}
g_WindowContext = GetDC(g_Window);
if( !g_WindowContext ) {
return false;
}
The variables used here are:
HDC g_WindowContext;
HWND g_Window;
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.
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.
Fixed the problem, the last buffer I was deleting was buffer in video ram, I obviously can’t delete this one. No heap corruption going on at all just a logical thinking flaw.
Thank you to the people that tried to answer this one and help me.