我定义了CTypedPtrList<CObList,C_BookMarks*> m_listBookMark中间添加若干元素,程序退出时,执行下面代码:
POSITION pos,posDel;
C_BookMarks *BookMarks;
pos=m_listBookMark.GetHeadPosition();
while (pos!=NULL)
{
BookMarks=m_listBookMark.GetAt(pos);
posDel=pos;
m_listBookMark.GetNext(pos);
m_listBookMark.RemoveAt(posDel);
delete BookMarks;
}
m_listBookMark.RemoveAll();不知道为啥!每次调试到删除最后一个元素时delete BookMarks;便出现非法操作.
想问下能直接用m_listBookMark.RemoveAll()清空里面的内存吗?
POSITION pos,posDel;
C_BookMarks *BookMarks;
pos=m_listBookMark.GetHeadPosition();
while (pos!=NULL)
{
BookMarks=m_listBookMark.GetAt(pos);
posDel=pos;
m_listBookMark.GetNext(pos);
m_listBookMark.RemoveAt(posDel);
delete BookMarks;
}
m_listBookMark.RemoveAll();不知道为啥!每次调试到删除最后一个元素时delete BookMarks;便出现非法操作.
想问下能直接用m_listBookMark.RemoveAll()清空里面的内存吗?
解决方案 »
- 点击button按钮进入工作界面问题。急急急!!!!
- 请教图片格式转换问题
- dailong 相互调用
- silhouette extraction 轮廓提取方法征集
- 请教《智能拼图游戏》搜索算法引起内存不足的问题。
- 图形的重绘问题(100分)
- createfile/readfile/writefile应用于端口操作时,有什么要注意的?
- 需求分析
- 关于visual stdio 2010 的 故障请教
- INSERT INTO table_name(column1,column2,...) VALUES (value1,value2, ...) 问题,请大家帮帮忙!
- [color=#FF0000][b]VS2008下编译的MFC程序如何才能禁止可视化效果?[/b][/color]
- VC程序如何启动SQLserver................................
POSITION pos;
C_BookMarks *BookMarks;
pos=m_listBookMark.GetHeadPosition();
while (pos!=NULL)
{
BookMarks=m_listBookMark.GetAt(pos);
delete BookMarks;
m_listBookMark.GetNext(pos);
}
m_listBookMark.RemoveAll();
===========================================================不能,必须自己释放。
POSITION pos = myList.GetHeadPosition();while( pos != NULL )
{
delete myList.GetNext( pos );
}
myList.RemoveAll();
建议判断一个指针是否为空。POSITION pos;
C_BookMarks *BookMarks;
pos=m_listBookMark.GetHeadPosition();
while (pos!=NULL)
{
BookMarks=m_listBookMark.GetAt(pos);
if( BookMarks != NULL )
delete BookMarks;
m_listBookMark.GetNext(pos);
}
m_listBookMark.RemoveAll();
Agree
RemoveAll只是清空了列表,并没有删除列表中每个对象分配的数据。
CTypedPtrList里面实际上保存的只是指针。我们需要释放每个指针指向的内容。
C_BookMarks *BookMarks;
pos=m_listBookMark.GetHeadPosition();
while (pos!=NULL)
{
BookMarks=m_listBookMark.GetAt(pos);
if( BookMarks != NULL )
delete BookMarks;
m_listBookMark.GetNext(pos);
}
m_listBookMark.RemoveAll();
好想还是出现问题,哎!比较无语.获得最后那个元素时BookMarks=m_listBookMark.GetAt(pos),此时我看了下BookMarks好象有地址,因此BookMarks != NULL ,但里面的数据成员都为空的!(本来理论上有值的)但delete时就是出现问题,不知道各位有没遇到这种情况.