当我用CList模板建立了一个链表,在取出头结点前,先把他的指针取出来,RemoveHead()后,delete头结点报错了!是不是CList的RemoveHead()里面已经作了内存释放?
MsgNode* pNode = NULL;
pNode = &m_MsgList.GetHead();
m_MsgList.RemoveHead();
delete pNode;
MsgNode *Node = new MsgNode;
m_MsgList.AddTail(*Node);
CList采用保存副本的方式,所以这里的MsgNode *Node,你要自己释放
你这里是一个保存对象的链表,而不是一个指针链表,CList采用保存副本的方式进行存贮,而你原来new出来的堆则会形成内存泄漏,建议采用CList<MsgNode,MsgNode*>形式.