在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 函数使用,那么没有问题。
因为你是在 该函数返回之后才删除的。
[解决办法]