来自 While 循环 C++ 的分段错误
Segmentation Fault from a While Loop C++
我正在尝试从地图内部进行搜索,将所有相关的子代和后代推入一个堆栈。 mined
是之前声明的 json 对象。
if ( !mined[source].empty() ) {
std::vector<std::string> minedDataVec = mined[source];
while ( !minedDataVec.empty() ) {
for (std::string s: minedDataVec) {
stack.push(s);
if ( !mined[s].empty() ) {
std::vector<std::string> minedDataVec = mined[s];
} else {
minedDataVec.clear();
}
}
}
}
但是,我遇到了一个分段错误,我很确定这与这段代码中的 while 循环有关。删除 while 循环有效,但这意味着每次我想在我的地图中进行更深入的搜索时,我都必须手动添加更多代码。
首先,在 if
块中声明的名为 minedDataVec
的向量似乎没有意义...
至于分段错误,可能是因为minedDataVec.clear()
“使引用包含元素的任何引用、指针或迭代器无效。”(source ).
range-for
循环 for (std::string s: minedDataVec)
有一个指向 minedDataVec
的隐式迭代器,它可能会失效并导致无效读取访问导致分段错误。
我正在尝试从地图内部进行搜索,将所有相关的子代和后代推入一个堆栈。 mined
是之前声明的 json 对象。
if ( !mined[source].empty() ) {
std::vector<std::string> minedDataVec = mined[source];
while ( !minedDataVec.empty() ) {
for (std::string s: minedDataVec) {
stack.push(s);
if ( !mined[s].empty() ) {
std::vector<std::string> minedDataVec = mined[s];
} else {
minedDataVec.clear();
}
}
}
}
但是,我遇到了一个分段错误,我很确定这与这段代码中的 while 循环有关。删除 while 循环有效,但这意味着每次我想在我的地图中进行更深入的搜索时,我都必须手动添加更多代码。
首先,在 if
块中声明的名为 minedDataVec
的向量似乎没有意义...
至于分段错误,可能是因为minedDataVec.clear()
“使引用包含元素的任何引用、指针或迭代器无效。”(source ).
range-for
循环 for (std::string s: minedDataVec)
有一个指向 minedDataVec
的隐式迭代器,它可能会失效并导致无效读取访问导致分段错误。