“InfoSender.exe 中的 0x77609ee6 处未处理的异常: 0xC0000005: 写入位置 0x00030fd4 时发生访问冲突”是怎么回事?
“InfoSender.exe 中的 0x77609ee6 处未处理的异常: 0xC0000005: 写入位置 0x00030fd4 时发生访问冲突”
我只是写了个对话框上有两个按钮,分别点击会弹出相应的模式对话框的小程序,为什么一运行程序就出问题了,启用vs2008调试后出现如上解释。不知道大家见过这样的一场没有?
[解决办法]
改成这样试试:
CDlgSiteSelect *m_DlgSiteSelect;
CDlgMasterInfo *m_DlgMasterInfo;
CDlgSend::CDlgSend(CWnd* pParent /*=NULL*/)
: CDialog(CDlgSend::IDD, pParent)
{
m_DlgSiteSelect = (CDlgSiteSelect *)new CDlgSiteSelect;
m_DlgMasterInfo = (CDlgMasterInfo *)new CDlgMasterInfo;
//{{AFX_DATA_INIT(CDlgSend)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
}
另外加一个析构函数delete这两个指针。
[解决办法]
CDlgSiteSelect m_DlgSiteSelect;
CDlgMasterInfo m_DlgMasterInfo;
不要把对话框对象当作成员变量。
CDlgSiteSelect m_DlgSiteSelect;的实际意义是调用构造函数CDlgSiteSelect(NULL),并作一些初始化,
但此时父窗口还没创建出来,会有问题的
[解决办法]
模式对话框可以在DoModal返回之后delete;如果用非模式对话框,可以在销毁对话框之后delete this。