unordered_map,映射值自动更改,收到Signal'SIGSEGV'。描述:分段故障

时间:2013-03-30 21:32:41

标签: segmentation-fault unordered-map

我已经坚持了很长时间。我的代码很大,我尽力抽象出有问题的代码。

我使用C ++编程,我使用unordered_map存储多个变量。

class INFO
   {int interestingInfo1;
   double interestingInfo2;}
INFO *info;
typedef std::tr1::unordered_map<index,Info*,hashIndex> newMap;

line1:newMap myMap;
line2:myMap[index]=info;
line3:myMap[index]->interestedInfo1;

在我的程序中,每个对象都会被多次访问,在第一轮访问中,unordered_map运行良好,我可以获取Info指向的感兴趣信息,但是当第二个访问同一个对象时圆,第3行代码误导Segmentation fault

我打印出myMap中的元素,包括indexInfo所指向的interestInfo的地址(或者说Info本身的值),

index1  0x9765ad8 
... 

在第二次访问时,打印出相同的内容:

index1 0x98ba128
......

指针Info的值已更改!我想这个改变会让line3崩溃,

我现在很确定我没有对myMap做任何事情,但是为什么指针作为一个元素被改变了?

请帮帮我!非常感谢!

1 个答案:

答案 0 :(得分:0)

我认为您的自定义哈希算法可能会受到怀疑。我想象一些东西导致它在你访问它的不同时间产生不同的结果(也许你在中间改变了什么?)这样当你在那个键上访问它时它不再产生相同的值 - 或任何值,就此而言,因此分割错误。