2011-01-24 13 views
0


は、私は私が問題になる可能性があるものを予期しないセグメンテーションフォールト

void Graph::otherfunction() { 
    if(termination_condition() == true) 
    return 1; 
} 

それを呼び出すたびセグメンテーションフォールトを行い、以下の機能

bool Graph::termination_condition() { 
    for(int i = 0; i < nodes; i++) { 
     // check if any pair of neighbors is using the same color 
     //vector<int> neigh_colors; 
     //for(int idx = 0; idx < degree(node); idx++) { 
      // adjList[node][idx] is the neighbor 
      //if(find(neigh_colors.begin(), neigh_colors.end(), node_obj[adjList[node][idx]].l_color) == neigh_colors.end() ) 
      // // not found, add 
       //neigh_colors.push_back(node_obj[adjList[node][idx]].l_color); 
      //else 
      // return false; 
     //} 
     // check if the color of the node is used 
     //if(find(neigh_colors.begin(), neigh_colors.end(), node_obj[node].l_color) != neigh_colors.end() ) 
     // return false; 
     // check if color of node is in conflict list 
     //if(node_obj[node].tmp_conf_list.size()) 
     // if(find(node_obj[node].tmp_conf_list.begin(), node_obj[node].tmp_conf_list.end(), node_obj[node].l_color) != node_obj[node].tmp_conf_list.end()) 
     //  return false; 
    } 
    return true; 
    // return false; 
} 

がありますか?

おかげ

UPDATE:

int Graph::otherfunction() { 
    if(termination_condition() == true) 
    return 1; 
} 
+0

'nodes'はどこに宣言されていますか?なぜ、termination_conditionのコメントアウトされたコードはすべてですか? –

+3

'otherfunction'はコンパイルされず、' void'関数から 'return 1;'を返すことはできません。 –

+0

@Charles:コードの大部分をコメントアウトすることは、クラッシュが発生している場所を絞り込むための合理的な方法です。 –

答えて

3

私の水晶玉はthisポインタがNULLか、そうでない場合は無効である、と言う、とnodesは、メンバ変数です。

0

私たちが与えている少量の情報で、私たちができることはすべて推測です。

ベスト・ベットは、デバッガーを使用して問題を突き止め、問題がどこにあるかを調べることです。 otherFunctionの開始点にブレークポイントを設定すると、開始するのに適しています。

+0

私は夢中です。もし彼が他のルーチンでスタックを混乱させてしまって、そこにクラッシュしてしまうと、デバッガはそれほど助けにならないかもしれません。 –

+0

真実ですが、彼がそこに着くと彼のすべてのデータが乱されると、彼は他の場所を見ることを知ります。良い出発点。 :) – James