vc6.0做的动态库,定义了数据类型class A,A中包含CArray<class B, class B>
上层调用时,首先typedef CTypedPtrList<CObList,A *> DataAList;
DataAList C;添加数据如下:
A* dataA;
......
C.AddTail(dataA);
......释放时:
POSITION pos,pre;
pos = C.GetHeadPosition();
A* ptr = NULL;
while(pos)
{
pre = pos;
ptr = C.GetNext(pos);
C.RemoveAt(pre);
delete ptr; //这里出错,错误内容就是File:dbgheap.c, Line:1011 Expression: _CrtIsValidHeapPointer(pUserData)
}
......这样的代码在VC6.0下使用正常,但是在VS2003调用就会报错,是什么原因呀,请大家帮忙解答一下,多谢了
上层调用时,首先typedef CTypedPtrList<CObList,A *> DataAList;
DataAList C;添加数据如下:
A* dataA;
......
C.AddTail(dataA);
......释放时:
POSITION pos,pre;
pos = C.GetHeadPosition();
A* ptr = NULL;
while(pos)
{
pre = pos;
ptr = C.GetNext(pos);
C.RemoveAt(pre);
delete ptr; //这里出错,错误内容就是File:dbgheap.c, Line:1011 Expression: _CrtIsValidHeapPointer(pUserData)
}
......这样的代码在VC6.0下使用正常,但是在VS2003调用就会报错,是什么原因呀,请大家帮忙解答一下,多谢了
解决方案 »
- mfc error C2552: 'public: static struct CRuntimeClass const CMainFrame::classCM
- 急急急,关于GetFirstViewPosition(); GetNextView (pos); 老是出错
- 图标和位图有什么区别?
- 》》》多线程使用socket的困惑,为什么只有一个client端能工作
- 联接Oracle 数据库
- 哪里有数据库程序的原代码(不是访问数据库,是自编的数据库)
- 我想学习vc,怎么入们,从哪里着手?能介绍些入门资料吗?
- 怎样在我的程序中禁掉系统里的电源管理设置?
- 请各位帮忙,急等!
- 谁能告诉我如何用正则表达式得到网页中的全部图片链接?
- 窗口收不到WM_INITMENUPOPUP消息 高手进来帮忙 解决分全送!
- 高分 求解决 ---关于自绘按钮闪烁
另外,你 delete ptr; 前应该先判断 ptr 是否为 NULL ,这样安全点
1.ptr已经做了判断的,不为NULL的时候才去delete的;
2.即使不使用动态库,仅仅在2003的工程里面增加一个新的类去实现这种功能,也会出现同样的错误……
循环外做C.RemoveAll();
不知每次循环内来一次C.RemoveAt(pre);会不会影响链表的内部结构,即之前取的pos是否还有效