Я работаю над фреймворком и столкнулся с проблемой. Я заметил, что я терял память, не удаляя объект. Когда я пытался удалить этот объект непосредственно перед выходом из приложения, я получаю сообщение об ошибке, а именно:
После того, как я получил это, я схватил Проверка приложения
При запуске кода он устанавливает точку останова для следующего фрагмента кода:
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;
}
Он устанавливает точку останова на строке с помощью «ChoosePixelFormat (g_WindowContext, & tPfd);» и имел следующее «объяснение» для этого:
VERIFIER STOP 00000301: pid 0x3689C: недопустимый индекс TLS, используемый для текущей трассировки стека.
FFFFFFFF : Invalid TLS index.
0000ABBA : Expected lower part of the index.
00000000 : Not used.
00000000 : Not used.
Я не совсем понимаю, что происходит, строки над этими фрагментами кода выглядят следующим образом:
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;
}
Переменные, используемые здесь:
HDC g_WindowContext;
HWND g_Window;
Объект, который я пытаюсь удалить, не является чем-то особенным, объект не поврежден во время работы приложения. Я могу использовать объект, я пытался использовать все его функции, и они все работают, как и ожидалось, время от времени. Просто когда я пытаюсь удалить объект в конце, он выдает сообщение об ошибке. Объект удаляется чуть ниже основного цикла приложения, когда все очищено. Ничто не использует его в этой точке, кажется, ничто не является проблемой, при установке точки останова указатель на сам объект также действителен.
Если кто-нибудь сможет мне помочь, будет очень признателен, если вам нужна дополнительная информация или фрагменты кода, пожалуйста, дайте мне знать.