[英]Segmentation Fault from a While Loop C++
我正在嘗試從 map 內部進行搜索,這會將所有相關的子代和后代推入堆棧。 mined
的是之前聲明的 json object。
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 循環是可行的,但這意味着每次我想在 map 中進行更深入的搜索時,我都必須手動添加更多代碼。
首先,在if
塊中聲明的名為minedDataVec
的向量似乎毫無意義......
至於分段錯誤,可能是因為minedDataVec.clear()
“使引用包含元素的任何引用、指針或迭代器無效。 ”(來源)。
for (std::string s: minedDataVec)
的range-for
循環對minedDataVec
有一個隱式迭代器,它可能會變得無效並導致無效讀取訪問導致分段錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.