那么说,应该是MFC的错了!
原标题内容太长了,换页,原题见: http://www.csdn.net/expert/topic/102/102243.shtm
那么说,应该是MFC的错了,因为CObList这个类在MFC中提供了Serializ方法,但是在MSDN中却没有出现?也许MFC的程序员发现这个Serializ函数有问题,所以不敢写出来,既然MFC中有这个东西,我那样调用也不算错,只是因为这个东西本身就是有问题的。
MFC中CObList的Serializ方法如下:
文件路径在.../.../VC98/MFC/SRC/LIST_O.CPP
/////////////////////////////////////////////////////////////////////////////
// Serialization
void CObList::Serialize(CArchive& ar)
{
ASSERT_VALID(this);
CObject::Serialize(ar);
if (ar.IsStoring())
{
ar.WriteCount(m_nCount);
for (CNode* pNode = m_pNodeHead; pNode != NULL; pNode = pNode->pNext)
{
ASSERT(AfxIsValidAddress(pNode, sizeof(CNode)));
ar << pNode->data;
}
}
else
{
DWORD nNewCount = ar.ReadCount();
CObject* newData;
while (nNewCount--)
{
ar >> newData;
AddTail(newData);
}
}
}
请大家帮我证明这个函数确实有问题。