小弟做的简单的说就是一个对话框加上打印功能,vc2008下debug没问题,也可以运行,但release编译是没问题,运行就出错,错误提示是"xxx.exe 中的 0x0041a9ce 处未处理的异常: 0xC0000005: 读取位置 0xfeeefeee 时发生访问冲突"。下面是部分代码:
int CConstantTestDlg::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CDialog::OnCreate(lpCreateStruct) == -1)
return -1; // TODO: 在此添加您专用的创建代码
CChildFrame* pFrame = new CChildFrame;
m_pChildFrame = pFrame; // create and load the frame with its resources
pFrame->LoadFrame(IDR_PRINTFRAME,WS_OVERLAPPED|WS_MINIMIZEBOX|WS_SYSMENU,NULL,NULL); m_pChildFrame->SetWindowText(_T("打印报表")); //程序就停在这里
m_pChildFrame->SetIcon(m_hIcon, FALSE);
m_pChildFrame->ShowWindow(SW_HIDE); m_pChildFrame->UpdateWindow();
return 0;
}局部变量里面可以看到“CChildFrame hWnd=0xfeeefeee”,知道是这个地方有问题,但是不明白,为什么release下就会错,各位小哥帮忙看看,我可以再加分的,谢谢!
int CConstantTestDlg::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CDialog::OnCreate(lpCreateStruct) == -1)
return -1; // TODO: 在此添加您专用的创建代码
CChildFrame* pFrame = new CChildFrame;
m_pChildFrame = pFrame; // create and load the frame with its resources
pFrame->LoadFrame(IDR_PRINTFRAME,WS_OVERLAPPED|WS_MINIMIZEBOX|WS_SYSMENU,NULL,NULL); m_pChildFrame->SetWindowText(_T("打印报表")); //程序就停在这里
m_pChildFrame->SetIcon(m_hIcon, FALSE);
m_pChildFrame->ShowWindow(SW_HIDE); m_pChildFrame->UpdateWindow();
return 0;
}局部变量里面可以看到“CChildFrame hWnd=0xfeeefeee”,知道是这个地方有问题,但是不明白,为什么release下就会错,各位小哥帮忙看看,我可以再加分的,谢谢!
==应该是这里面有问题吧。局部变量里面可以看到“CChildFrame hWnd=0xfeeefeee”,
==这个你是指pFrame呢,还是m_pChildFrame呢?
刚刚没说清楚,调试到了winocc.cpp的这个部分错误
void CWnd::SetWindowText(LPCTSTR lpszString)
{
ENSURE(this);
ENSURE(::IsWindow(m_hWnd) || (m_pCtrlSite != NULL)); if (m_pCtrlSite == NULL)
::SetWindowText(m_hWnd, lpszString);
else
m_pCtrlSite->SetWindowText(lpszString); //最后停在这里
}
可以看得出来是m_pChildFrame->SetWindowText(_T("打印报表"))这里错了。。
这个时候CChildFrame hWnd=0xfeeefeee,是pFrame。