读书人

在for中申明的指针如何释放

发布时间: 2012-04-13 13:50:24 作者: rapoo

在for中申明的指针怎么释放

C/C++ code
CGraphSeries *series;    for(int row = 0; row < n;++row)    {                series = new CGraphSeries();        series->SetData(row,ArrayRTAngle[row]);        series->SetData(row+1, ArrayRIAngle[row]);        series->SetData(row+2, ArrayRMAngle[row]);        series->SetData(row+3, ArrayRRAngle[row]);        series->SetData(row+4, ArrayRLAngle[row]);        series->SetLabel(RDate[row]);   //设置X轴显示时间        GraphRight->AddSeries(series);    }    

我不管在for中加delete还是在外面加delete,都抱这个错


[解决办法]
在for外申请一个,在for内用
[解决办法]
C/C++ code
void CGraph::AddSeries(CGraphSeries* dataSet){    int numData = 0;    for(int i = 0; i < 10; i++)    {        if(dataSet->GetData(i) > 0)            numData++;        if(dataSet->GetLabel().GetLength() > xAxisLabelLength)            xAxisLabelLength = dataSet->GetLabel().GetLength();    }    if(numData > seriesSize)        seriesSize = numData;    graphSeries->AddTail(dataSet);}void CGraphSeries::SetData(int group, int dValue){    dataValue[group] = dValue;}
[解决办法]
GraphRight->AddSeries(series);

内部在使用这个指针。外面不能立刻删除。可以考虑用智能指针。
[解决办法]
GraphRight->AddSeries(series);
这句是不是关联了对象,先删除关联再delete
[解决办法]
在for外申请个二维的也行吧
[解决办法]
C/C++ code
    CGraphSeries *series;    series = new CGraphSeries();    for(int row = 0; row < n;++row)    {        series->SetData(row,ArrayRTAngle[row]);        series->SetData(row+1, ArrayRIAngle[row]);        series->SetData(row+2, ArrayRMAngle[row]);        series->SetData(row+3, ArrayRRAngle[row]);        series->SetData(row+4, ArrayRLAngle[row]);        series->SetLabel(RDate[row]);   //设置X轴显示时间        GraphRight->AddSeries(series);    }    delete  series;
[解决办法]
GraphRight->AddSeries不能确定加入的是series的一个copy还是series本身,因为不知道GraphRight是如何定义的;
如果加入的是series的一个copy,series可以删除,
如果加入的是series本身,则应该在GraphRight析构(时)函数中删除
[解决办法]
不需要的时候从GraphRight列表中依次取出,然后delete
[解决办法]
如果仅仅是 AddXXX 函数使用,那么没有问题。
因为你是在 该函数返回之后才删除的。

[解决办法]
探讨

不需要的时候从GraphRight列表中依次取出,然后delete

读书人网 >VC/MFC

热点推荐