c++ - C++ 中 pop_front() 的段错误

标签 c++ list segmentation-fault

我的问题是我在调用“processList.pop_front()”后遇到了段错误。如果我注释掉“processList.pop_front()”,那么在最外层的 for 循环的第二次迭代期间会发生分段,在 tt.pop_front() 调用之后,在内部 for 循环经历了将近 5000 次迭代。我看不出问题出在哪里。有什么想法吗?

loopLimit = processList.size();

for(int i = 0; i < loopLimit; i++)
{
    tempProcess = processList.front();
    tt = tempProcess.memAccesses;
    cout << "process number " << i << "\n";

    while(!tt.empty())
    {
        t = tt.front();
        tt.pop_front();
        cout << "from processlist: " << t.instrType << "  " << t.instrAddr << "\n";
    }

    if(!processList.empty())
    {
        cout << "size is now: " << processList.size() << "\n";
        processList.pop_front();
    }

}

最佳答案

我有一个类似的问题,我通过向双端队列添加一个无效值来解决它:

loopLimit = processList.size();

for(int i = 0; i < loopLimit; i++)
{
    tempProcess = processList.front();
    tt = tempProcess.memAccesses;
    cout << "process number " << i << "\n";

    tt.push_back(-1);  //I guess you don't have a -1 type, so you wont have colisions
    while( tt.front()!=-1)
    {
        t = tt.front();
        tt.pop_front();
        cout << "from processlist: " << t.instrType << "  " << t.instrAddr << "\n";
    }

    if(!processList.empty())


    {
        cout << "size is now: " << processList.size() << "\n";
        processList.pop_front();
    }

}

您可能需要稍微调整一下。 这不是一个很好的解决方案,但它确实有效。

关于c++ - C++ 中 pop_front() 的段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5364971/

相关文章:

Python - 识别列表中的负数

c++ - 为什么这段代码会发出 SIGSEGV 信号?

c++ - typedef struct name 没有后续结构定义的名称

c++ - 绑定(bind)()错误 98 - "Address already in use"

c++ - 引用 unique_ptr 是一种错误的用法吗?

python - Boost.Python + OpenGL 段错误

c - 分段故障

c++ - 如何在C++中将二进制文件转换为WAV文件

Excel VBA 数据验证 - 下拉 : Options too many to be saved, 导致错误 "Excel found unreadable content"

c# - 如何将 list<> 转换为多维数组?