hur.cn - 华软网

 热门搜索

关于list的奇怪问题

  作者:未知    来源:网络    更新时间:2011/5/24
在MFC中使用STL的list,只是根据实际问题写的一段测试代码,非常简单,但关闭窗口的时候就会报堆栈错误,请高手看看,这有什么问题?
下面的代码,只要声明一个B的对象出来,关闭的时候就出问题了.最终报错是在这行代码里.
return HeapValidate( _crtheap, 0, pHdr(pUserData) );
我花一晚上的时间在自己的代码里找错误,最后发现好像在父类里添加的链表元素,到子类里删除就出问题,反之亦然.这是什么特殊规定吗?
我用的是VS2003
#include <list>
using namespace std;
class A
{
public:
list<int>  m_list;
A()
{
m_list.push_back(1);
}
virtual ~A(){}
};

class B : public A
{
public:
B()
{
}
virtual ~B()
{
m_list.clear();
}
};
---华软 网友回答---
试了一下,一点问题也没有:
C++">
#include <iostream>
#include <list>
using namespace std;
class A
{
public:
list<int> m_list;
A()
{
m_list.push_back(1);
}

virtual void add(int v) {
m_list.push_back(v);
}

virtual ~A(){}
};

class B : public A
{
public:
B()
{
}
virtual ~B()
{
m_list.clear();
}
};

int main()
{
A* pA = new B;
for (int i(0); i<100; i++)
pA->add(i);

delete pA;

system("pause");

return 0;
}


---华软网友回复---
没看出什么问题
---华软网友回复---
我也郁闷了,昨晚回家在自己电脑上试了2008和2003版本都没有问题,我怀疑是公司这边版本有问题.但今天早上来了之后,公司电脑上也没有问题了,昨晚的代码我一行未改,直接运行,结果就不报错了.应该是昨晚系统出故障了.谢谢楼上2位的关心!
---华软网友回复---
上述代码没有问题,把你具体使用的代码发出来      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。