Corrupção de heap ao usar CreateWindowExW
Estou com alguns problemas com a corrupção da pilha. O aviso pode ser observado ao usar a função CreateWindowExW. Eu sei que geralmente é um erro de memória, mas como eu poderia procurar em tal situação? Não há novas variáveis antes de chamar CreateWindowExW e não consigo entrar nessa função. Aqui está o código.
HWND GetMainWnd(HINSTANCE hInstance){
static HWND hWnd = NULL;
if (hWnd)
return hWnd;
RETURN_AT_ERROR(hInstance, NULL);
WNDCLASSEX wcex = { sizeof(WNDCLASSEX) };
wcex.style = CS_HREDRAW | CS_VREDRAW;
wcex.lpfnWndProc = MainWndProc;
wcex.hInstance = hInstance;
wcex.hCursor = ::LoadCursorW(NULL, IDC_ARROW);
wcex.lpszClassName = g_config->GetWndClass();
ATOM atom = ::RegisterClassExW(&wcex);
RETURN_AT_ERROR(atom != 0, NULL);
hWnd = ::CreateWindowExW(WS_EX_LEFT, g_config->GetWndClass(), 0, WS_POPUP | WS_MINIMIZEBOX | WS_CLIPCHILDREN, 0, 0, 0, 0, 0, 0, hInstance, 0);
return hWnd;}
Nesta cadeia
hWnd = ::CreateWindowExW(WS_EX_LEFT, g_config->GetWndClass(), 0, WS_POPUP | WS_MINIMIZEBOX | WS_CLIPCHILDREN, 0, 0, 0, 0, 0, 0, hInstance, 0);
existe uma caixa de mensagem de aviso
O Windows acionou um ponto de interrupção no drm.exe. Isso pode ocorrer devido a uma corrupção do heap, que indica um erro no drm.exe ou em qualquer uma das DLLs carregadas. Isso também pode ser devido ao usuário pressionar F12 enquanto o drm.exe estiver em foco. A janela de saída pode ter mais informações de diagnóstico.
Eu pressiono "Continuar" e mostra
Unhandled exception at 0x77dae753 in app.exe: 0xC0000374: A heap has been corrupted.
No entanto, CreateWindowExW retorna um valor diferente de zero e a janela é criada como deveria ser ...