我新建了一个MFC工程,client类是从CSocket继承下来的。
Debug调试的时候发现:给CSocketFile类型的指针变量(m_socketfile)分配空间的时候出现报错。
m_socketfile变量声明如下:
// Overrides
public:
CArchive * m_archiveout;
CArchive * m_archivein;
CSocketFile * m_socketfile;client:Init()函数体如下:void client::Init(CChatDlg *pDlg)
{
m_socketfile=new CSocketFile(this);
m_archivein=new CArchive(m_socketfile,CArchive::load);
m_archiveout=new CArchive(m_socketfile,CArchive::store);
}用Debug函数进行单步调试,发现是进入CRTMBOX.C后出现的报错,CRTMBOX.C里有这样的语句:
if (pfnGetActiveWindow)
hWndParent = (*pfnGetActiveWindow)(); if (hWndParent != NULL && pfnGetLastActivePopup)
hWndParent = (*pfnGetLastActivePopup)(hWndParent); return (*pfnMessageBoxA)(hWndParent, lpText, lpCaption, uType);调试的时候发现是第一个if条件成立,然后跳到return,再点下一步的时候,就弹出一个提示框,有如下的报错信息:debug assertion failed !
Debug调试的时候发现:给CSocketFile类型的指针变量(m_socketfile)分配空间的时候出现报错。
m_socketfile变量声明如下:
// Overrides
public:
CArchive * m_archiveout;
CArchive * m_archivein;
CSocketFile * m_socketfile;client:Init()函数体如下:void client::Init(CChatDlg *pDlg)
{
m_socketfile=new CSocketFile(this);
m_archivein=new CArchive(m_socketfile,CArchive::load);
m_archiveout=new CArchive(m_socketfile,CArchive::store);
}用Debug函数进行单步调试,发现是进入CRTMBOX.C后出现的报错,CRTMBOX.C里有这样的语句:
if (pfnGetActiveWindow)
hWndParent = (*pfnGetActiveWindow)(); if (hWndParent != NULL && pfnGetLastActivePopup)
hWndParent = (*pfnGetLastActivePopup)(hWndParent); return (*pfnMessageBoxA)(hWndParent, lpText, lpCaption, uType);调试的时候发现是第一个if条件成立,然后跳到return,再点下一步的时候,就弹出一个提示框,有如下的报错信息:debug assertion failed !
{
client *pSocket;
pSocket=new client();
pSocket->Init(this);
MessageBox("test5");
//m_list+="\r\n有用户连接上";}ProcessPendingAccept()函数又被另外一个CSocket类(server)调用了。void server::OnAccept(int nErrorCode)
{
// TODO: Add your specialized code here and/or call the base class
m_list1=new CChatDlg();
m_list1->ProcessPendingAccept();
CSocket::OnAccept(nErrorCode);
}m_list1是CChatDlg类的变量