可能是分段错误的可能原因是什么?

时间:2015-04-30 09:07:39

标签: multithreading c++11 segmentation-fault gdb

代码段如下:

ValueMapIter valueIter;    
for (valueIter = activeValues->begin(); valueIter !=activeValues->end(); ++valueIter)
{
        cout << "Before First" << endl;
        cout << "sizeactivevalue:" << activeValues->size() << endl;
        cout << "first:" << valueIter->first << "Second:" << valueIter->second << endl;
}

使用gdb运行时的PROGRAM输出是: 程序输出

在第一次之前

sizeactivevalue:10

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x2aaaac8ad940 (LWP 8346)]
0x000000000043e732 in ValueManager::InsertModValue (this=0xd455c90, Id=4615, PId=7753, eId=1100000010570903, iId=2, inId=44301, pe=830795, t=25, bl=2, ste=3, sde=2)
    at /home/pathtofile/valuemanager.cpp:304
304     cout << "first:" << valueIter->first << "Second:" << valueIter->second << endl; 

如何收到分段错误,而我有一个ValueMapIter的本地副本,并且它之前正确运行了代码。

该程序是多线程的;只有一个activeValues地图。该片段位于InsertModValues函数内。 activeValue映射的大小是10那么iter如何没有有效的第一个元素?

0 个答案:

没有答案