0

奇妙なセグメンテーション違反が発生しました。デバッグのために、一部の値が一定になるようにコードを書き直しましたが、セグメンテーション違反は残ります。この時点で、何がこの障害を引き起こしているのかわかりません。

Program terminated with signal 11, Segmentation fault.
#0  findMaxFlowInSTNetwork (graph=0xbfb74076, adj=0xbfaaccf4, source=1, target=2, 
    maxValue=2) at invariants/connectivity/multi_connectivity.c:36
36      int order = 4;
(gdb) print order
Cannot access memory at address 0xbbd980c4

私はこのようなセグメンテーション違反を経験したことがありません。これを引き起こしている可能性のあるものと、それを修正する方法を知っている人はいますか?

編集:

その関数のコードは次のとおりです。

//returns the minimum of the maxflow of the st-network and maxValue
int findMaxFlowInSTNetwork(GRAPH graph, ADJACENCY adj, int source, int target, int maxValue){
    int order = 4;
    //int order = graph[0][0];
    int paths[(MAXN+1)*(MAXN+1)] = {0};
    int pathCount = 0;
    boolean currentPath[MAXN+1] = {0};
    while(findPath(graph, adj, source, target, paths, order, currentPath) && pathCount < maxValue){
        pathCount++;
    }
    return pathCount;
 }

コメントの行は元の行です。これはセグメンテーション違反を引き起こしていたので、行に置き換えましたint order = 4;。この関数を次のように呼び出します。

minimumCutSize = minDegree;
for (i = 1; i <= graph[0][0]; i++){
    if(i!=vertexMinDegree){
        minimumCutSize = findMaxFlowInSTNetwork(graph, adj, vertexMinDegree, i, minimumCutSize);
    }
}
4

1 に答える 1