一个小问题~!!!

yiailin2009 2009-06-18 10:00:10
写了一段代码~!
编译出错:

"0x77d2e9ac"指令引用的"0xcccccccc"内存.该内存不能为"read".


这是什么意思??
怎样做才能不出错??
...全文
37 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
yiailin2009 2009-06-18
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 goodname 的回复:]
Wndcls.lpszClassName="weixin";
增加这句
[/Quote]
.......
这句删了忘记加上去了。。。
谢谢大家
Tippisum 2009-06-18
  • 打赏
  • 举报
回复
应该是某个内存函数访问失败返回了一个错误码,程序没有检查就当指针来用了。
0xcccccccc这种东西,一看就知道是内存操作错误的返回码。
(所有的系统内存操作,如果成功则返回指针,失败则返回大于0xc0000000的值作为错误码,因为0xc0000000开始是系统内核,用户指针不可能到达此区域。
mandysss 2009-06-18
  • 打赏
  • 举报
回复
没有指向一个有效的地址,当然不能去操作了
goodname 2009-06-18
  • 打赏
  • 举报
回复
Wndcls.lpszClassName="weixin";
增加这句
honglei8485 2009-06-18
  • 打赏
  • 举报
回复
UP
yiailin2009 2009-06-18
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 elovenana 的回复:]
char szchar[20]="\0";试试
sprintf(szchar,"char is %d",wparam);
MessageBox(hwnd,szchar,"weixin",0);
[/Quote]
编译不成功
长安宁 2009-06-18
  • 打赏
  • 举报
回复
char szchar[20]="\0";试试
sprintf(szchar,"char is %d",wparam);
MessageBox(hwnd,szchar,"weixin",0);
yiailin2009 2009-06-18
  • 打赏
  • 举报
回复
#include<windows.h>
#include<stdio.h>
LRESULT CALLBACK WinSunProc(

HWND hwnd,
UINT uMsg,
WPARAM wparam,
LPARAM lparam);


int WINAPI WinMain(
HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdSHow)
{

WNDCLASS Wndcls;
Wndcls.cbClsExtra=0;
Wndcls.cbWndExtra=0;
Wndcls.hbrBackground=(HBRUSH)GetStockObject(BLACK_BRUSH);
Wndcls.hCursor=LoadCursor(hInstance,IDC_ARROW);
Wndcls.hIcon=LoadIcon(hInstance,IDI_HAND);
Wndcls.hInstance=hInstance;
Wndcls.lpfnWndProc=WinSunProc;
Wndcls.lpszMenuName=NULL;
Wndcls.style=CS_HREDRAW | CS_VREDRAW;
RegisterClass(&Wndcls);
HWND hwnd;
hwnd=CreateWindow("weixin","北京为新",WS_OVERLAPPEDWINDOW,0,0,600,400,NULL,NULL,hInstance,NULL);
ShowWindow(hwnd,SW_SHOWNORMAL);
MSG msg;
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);

}
return 0;

}

LRESULT CALLBACK WinSunProc(
HWND hwnd,
UINT uMsg,
WPARAM wparam,
LPARAM lparam
)
{
switch(uMsg)
{
case WM_CHAR:
char szchar[20];
sprintf(szchar,"char is %d",wparam);
MessageBox(hwnd,szchar,"weixin",0);
break;
case WM_LBUTTONDOWN:
MessageBox(hwnd,"mouse clicked","weixin",0);
HDC hdc;
hdc=GetDC(hwnd);
TextOut(hdc,0,50,"计算机培训" ,strlen("计算机培训"));
ReleaseDC(hwnd,hdc);
break;
case WM_PAINT:
HDC hDc;
PAINTSTRUCT ps;
hDc=BeginPaint(hwnd,&ps);
TextOut(hDc,0,0,"为新培训",strlen("为新培训"));
EndPaint(hwnd,&ps);
break;
case WM_CLOSE:
if(IDYES==MessageBox(hwnd,"是否真的结束?","weixin",MB_YESNO))
{
DestroyWindow(hwnd);

}
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd,uMsg,wparam,lparam);



}

return 0;
}
代码在此。。。。
lingyin55 2009-06-18
  • 打赏
  • 举报
回复
一般是数组越界或者指针非法访问内存。
w0911h 2009-06-18
  • 打赏
  • 举报
回复
这种情况一般就是指针错,最好把代码贴出来
ameyume 2009-06-18
  • 打赏
  • 举报
回复
未申请内存,未初始化

65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧