更改导致seg错误的矢量值

问题描述:

我正在为图形的学校项目工作,此处我正在深入搜索树。更改导致seg错误的矢量值

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; 

//访问[0] = TRUE;

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

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

代码中有两个不同的变量visited。里面的if条件,visited是矢量,但这块之外,在最后一行:

visited[v] = true; 

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