我正在编写一个分割图的程序,我有一个类 Graph 和一个算法类。我在我的 Algorithm 类中计算分区,并根据分区使用 Graph 类中的方法拆分图。
我的代码如下所示: 在我的 GraphClass 中:
void bisectGraph(int *iPartitioning, Graph **Subgraphs, Edge **Separator){
...
// Store separators in an array
Separator = new Edge*[Separators.size()+1]; //Separators is a vector containing the separating edges
if(Separator == NULL)
writeErrorMsg("Error assigning memory.", "Graph::bisectGraph");
for(i=0, SepIter = Separators.begin(); SepIter != Separators.end(); i++, SepIter++)
Separator[i] = *SepIter;
Separator[Separators.size()] = NULL;
}
在我的算法类中,我这样称呼它:
Edge** separators;
Graph** subgraphs;
int somePartitioning;
g->bisectGraph(somePartitioning, subgraphs, separators);
到目前为止工作正常,但是当我想像这样处理我的分隔符数组时:
for(int i=0; separators[i]!=NULL, i++){
...
}
我总是遇到分段错误。ddd 告诉我,在 bisectGraph 分隔符的末尾包含一些内容。由于我找不到任何其他错误,我认为我有一些概念错误?