簡體   English   中英

來自 While 循環 C++ 的分段錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM