改变矢量值导致seg故障

时间:2010-12-01 00:51:17

标签: c++ pointers boolean

我正在开展一个图表的学校项目,在这里,我正在树下深入搜索。

void wdigraph::depth_first(int v) const {
    static int firstv = -1;
    static bool *visited = NULL;

    if (firstv == -1) {
            firstv = v;
            vector<bool> visited(size);
            for (int i = 0; i < size; i++) {
                    visited[i] = false;
                    cout << visited[i] << endl;
            }
    }
    cout << label[v];
  visited[v] = true;
  

// visited [0] = true;

该函数的第一个输入值为0(v = 0)并且与之崩溃。 size = 5.正如您在代码末尾所看到的,我尝试使用相同的seg错误手动将visited设置为true。当我删除所有改变访问的尝试时,程序将运行通常没有seg错误的情况。

为什么不能修改这个想法?此外,还有更多的代码,但我决定不提供它,除非必要。

1 个答案:

答案 0 :(得分:3)

代码中有两个名为visited的变量。在if条件中,visited是一个向量,但在此块之外,在最后一行:

visited[v] = true;

visited是指代码开头定义的bool *visited = NULL。发生段错误是因为您尝试取消引用空指针。