【发布时间】:2018-12-27 19:03:56
【问题描述】:
首先,我正在学习 WIN32 atm。所以,我决定在网上找一些指南。我找到了一些关于它的文章,但是在第 4 篇文章中老师写了一些代码,发生了一个异常,它停止了进程并写道:“这一行称为断点”。这段代码使用了一些内存操作(GlobalAlloc、GlobalFree)和一些字体操作,我认为这可能会导致一些内存不足。我想,如果我要删除这段代码,我也会删除这个问题。但现在我的代码无法运行,这里总是发生一些错误,说:“在地址 0xcccccccc 访问 vilation”。此消息出现在 RegisterClassEx() 行,我不知道应该释放哪个内存区域。告诉我,伙计们,我该怎么办。我使用 VS17 和 Windows 10。这是我的代码,是手写的(不是必需的):
#include "stdafx.h"
#include <Windows.h>
LPCWSTR szClassName = L"defaultWindow";
LRESULT CALLBACK WindowProcedure(HWND hWindow, UINT message, WPARAM wParam,
LPARAM lParam)
{
switch (message)
{
case WM_CREATE:
MessageBoxW(hWindow, L"Hello!", L"Program", MB_OK |
MB_ICONINFORMATION);
break;
case WM_DESTROY:
PostQuitMessage(NULL);
break;
default:
return DefWindowProcW(hWindow, message, wParam, lParam);
}
return NULL;
}
int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE pInstance, LPTSTR
lpszCmdLine, int nCmdShow)
{
WNDCLASSEX windowClass;
windowClass.cbSize = sizeof(windowClass);
windowClass.cbClsExtra = 0;
windowClass.cbWndExtra = 0;
windowClass.style = CS_VREDRAW | CS_HREDRAW;
windowClass.hIcon = LoadIcon(hInstance, IDI_WINLOGO);
windowClass.hCursor = LoadCursor(hInstance, IDC_ARROW);
windowClass.hIconSm = LoadIcon(hInstance, IDI_WINLOGO);
windowClass.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH);
windowClass.lpfnWndProc = WindowProcedure;
windowClass.lpszClassName = szClassName;
if (!RegisterClassEx(&windowClass))
{
MessageBoxW((HWND)NULL, L"Window class couldn't be registered!",
L"Error!", MB_OK | MB_ICONERROR);
return NULL;
}
HWND hMainWindow = CreateWindowW(szClassName, L"Программа",
WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
CW_USEDEFAULT,
(HWND)NULL,
(HMENU)NULL, hInstance, (LPARAM)NULL);
if (!hMainWindow)
{
MessageBoxW((HWND)NULL, L"Window couldn't be
created!",L"Error!",MB_OK | MB_ICONERROR);
return NULL;
}
ShowWindow(hMainWindow, nCmdShow);
UpdateWindow(hMainWindow);
MSG message;
while (GetMessageW(&message, hMainWindow, (UINT)NULL, (UINT)NULL))
{
TranslateMessage(&message);
DispatchMessage(&message);
}
return message.wParam;
}
各位帮忙,我不会编码
【问题讨论】:
-
异常和断点是无关的东西。
-
这似乎是learn how to debug your programs 的好时机。更具体地说,使用调试器捕捉崩溃在操作中 以定位它在代码中发生的时间和位置。然后您还可以检查所有相关变量的值。
-
问题是,我没有放断点
-
我使用了调试器,但我认为,问题已附加到某些系统文件或内存区域,因为重新启动 vs,计算机无法修复该问题,而我的代码没问题
-
另外,请阅读this question checklist 和所有idownvotedbecau.se,了解您的问题可能被否决的一些原因。
标签: c++ windows winapi exception memory