MFC的问题,出现访问冲突

#include<afxwin.h>TCHARtitle[]=TEXT("MFC");classCMyWnd:publicCFrameWnd{private:char*S... #include <afxwin.h>

TCHAR title[] = TEXT("MFC");

class CMyWnd:public CFrameWnd
{
private:
char *ShowText;
public:
afx_msg void OnPaint();
afx_msg void OnLButtonDown(UINT, CPoint);
DECLARE_MESSAGE_MAP();
};

BEGIN_MESSAGE_MAP(CMyWnd,CFrameWnd)
ON_WM_PAINT()
ON_WM_LBUTTONDOWN()
END_MESSAGE_MAP()

void CMyWnd::OnPaint()
{
CPaintDC dc(this);
dc.TextOut(20, 20, ShowText);
}

void CMyWnd::OnLButtonDown(UINT m, CPoint c)
{
ShowText = "Hello World";
InvalidateRect(NULL, TRUE);
}

class CMyApp:public CWinApp
{
public:
BOOL InitInstance();
};

BOOL CMyApp::InitInstance()
{
CMyWnd *pMainWnd = new CMyWnd;
pMainWnd->Create(0, title);
pMainWnd->ShowWindow(m_nCmdShow);
pMainWnd->UpdateWindow();
m_pMainWnd = pMainWnd;
return TRUE;
}

CMyApp MyApp;

能够compile,但是运行时出现
FirstMFC.exe 中的 0x758282ce 处有未经处理的异常: 0xC0000005: 读取位置 0xcdcdcdcd 时发生访问冲突
在别人的机子上能够运行
就是在dc.TextOut(20, 20, ShowText);这行跳出的
展开
 我来答
甩葱高达
2011-12-24
知道答主
回答量:29
采纳率:0%
帮助的人:15.9万
展开全部
先把char *ShowText初始化指向一个字符串吧, 否则在点下鼠标前它都会指向一个未知的内存位置,很有可能会报错.
追问
我先把ShowText指向了一个值,然后可以运行了,但是为什么在别人的机子上运行时不要这么设定就能运行了?
追答
在别人机器上可能因为是release运行的, 实际指向的不一定是不可访问的内存.
而debug的话, 则一定是指向0XCDCDCDCD, 这是不可访问的,肯定会报错
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式