更改导致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
。发生段错误是因为您试图取消引用空指针。