我用了二重CPtrlist
第一重CPtrList中存放了几个CPtrlist对象的指针,new出来的
第二重CPtrList中存放了几个自定义的数组,也是new出来的
但是在释放内存的时候出错,说第二重CptrList的getNext函数Access Viloate分配内存:
for(i = 0 ; i<nComputeNum ;i++)
{
CPtrList *p = new CPtrList;
for(int j = 0 ; j < (*pTargetNum) ; j++)
{
_FusedDataPackage *pFused = new _FusedDataPackage[WSS_MAXDOTNUMBER];
p->AddTail(pFused);
}
pDoc->m_ptrFuseData.AddTail(p);
}
释放内存:
//销毁二重队列,比较大块的内存
POSITION pos;
CPtrList *p;
pos=m_ptrFuseData.GetHeadPosition();
while(pos!=NULL)
{
p=(CPtrList *)m_ptrFuseData.GetNext(pos);
//----------------------内层-------------------------
POSITION posIn;
_FusedDataPackage * pFused;
posIn = p->GetHeadPosition();
while(posIn!=NULL)
{
pFused = (_FusedDataPackage *)(p->GetNext(posIn));//**************************************
delete [] pFused;//销毁内层的队列 _FusedDataPackage[WSS_MAXDOTNUMBER]
}
//----------------------~内层----------------------------- p->RemoveAll();
delete p;//销毁外层的CPtrList指针
}
m_ptrFuseData.RemoveAll();上面的**************************************处报错,说Access violate
求助!
第一重CPtrList中存放了几个CPtrlist对象的指针,new出来的
第二重CPtrList中存放了几个自定义的数组,也是new出来的
但是在释放内存的时候出错,说第二重CptrList的getNext函数Access Viloate分配内存:
for(i = 0 ; i<nComputeNum ;i++)
{
CPtrList *p = new CPtrList;
for(int j = 0 ; j < (*pTargetNum) ; j++)
{
_FusedDataPackage *pFused = new _FusedDataPackage[WSS_MAXDOTNUMBER];
p->AddTail(pFused);
}
pDoc->m_ptrFuseData.AddTail(p);
}
释放内存:
//销毁二重队列,比较大块的内存
POSITION pos;
CPtrList *p;
pos=m_ptrFuseData.GetHeadPosition();
while(pos!=NULL)
{
p=(CPtrList *)m_ptrFuseData.GetNext(pos);
//----------------------内层-------------------------
POSITION posIn;
_FusedDataPackage * pFused;
posIn = p->GetHeadPosition();
while(posIn!=NULL)
{
pFused = (_FusedDataPackage *)(p->GetNext(posIn));//**************************************
delete [] pFused;//销毁内层的队列 _FusedDataPackage[WSS_MAXDOTNUMBER]
}
//----------------------~内层----------------------------- p->RemoveAll();
delete p;//销毁外层的CPtrList指针
}
m_ptrFuseData.RemoveAll();上面的**************************************处报错,说Access violate
求助!
解决方案 »
- 续:【求助】SHFileOperation() 函数中 SHFILEOPSTRUCT 结构的 pFrom 赋值的问题。
- 难道VC7与VC6不能像VC8那样进行编译优化吗?
- 关于类成员静态变量的使用问题,提问
- mfc问题, 请帮解决
- 简单的多线程问题,Up有分!
- mdi中如何在一个文档里面新建一个文档,并初始化文档内容,显示出来。
- 如何得到(数据库)表中各列的长度,适用于Sqlserver2000?SQLColumns得到的结果部完全正确!
- OpenGL实现三维切割,怎么做啊?
- 向各位directshow高手请教!为什么我的硬解码器提供的filter,用IPin::Next()去查时,只能找到input类型的PIN,却无法找到output类型的PIN啊??
- 求大神看看!
- 本人想做一个配置,连接,更改连接数据库的程序,各位有何高见?
- 暴简单的问题——为什么我在网上下载的vc程序不能在我的vc6.0中打开
pDoc->m_ptrFuseData.AddTail(p);
改为:
pDoc->m_ptrFuseData.AddTail((void *)p);因为前者把p指向的list接在m_ptrFuseData后面,后者则把指针p作为一个元素
添加到m_ptrFuseData中。
那就是说加入是必须使用void *强制转换才能只加入一个指针
呵呵
msdn没有仔细看
多谢了