当时用了网上的一个Graph曲线图类,发现会导致内存泄露,原因是因为创建的CGraphSeries对象一直未被清除。于是就调用了Graph中的RemoveAllSeries()函数,结果发现一直会出错,然后我研究啊研究啊,终于把其中一个问题解决了,设置seriesSize = 0;虽然没有再出错了,但是对象还没被清除,然后我又delete了其中的对象,结果又出错了。
就这样,研究了几天,网上找了各种方法,依然毫无进展,一直以为是COblist本身的问题。直到我新建了一个项目,自己创建COblist并delete对象,结果正常运行,于是我猛然醒悟,肯定不是我调用COblist的方法不对,而是是其他地方导致崩溃的。
最后,终于被我发现问题了。
解决方案:
替换Graph.cpp中的函数:
void CGraph::RemoveAllSeries()
{
while(!graphSeries->IsEmpty())
delete graphSeries->RemoveHead();
seriesSize = 0;
}
并替换GraphSeries.cpp中的函数
CGraphSeries::~CGraphSeries()
{
while(!dataValues->IsEmpty())
delete dataValues->RemoveHead();
delete dataValues;
}
最终测试完美解决泄露问题。