我已经坚持了很长时间。我的代码很大,我尽力抽象出有问题的代码。
我使用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中的元素,包括index
和Info
所指向的interestInfo的地址(或者说Info
本身的值),
index1 0x9765ad8
...
在第二次访问时,打印出相同的内容:
index1 0x98ba128
......
指针Info
的值已更改!我想这个改变会让line3崩溃,
我现在很确定我没有对myMap
做任何事情,但是为什么指针作为一个元素被改变了?
请帮帮我!非常感谢!
答案 0 :(得分:0)
我认为您的自定义哈希算法可能会受到怀疑。我想象一些东西导致它在你访问它的不同时间产生不同的结果(也许你在中间改变了什么?)这样当你在那个键上访问它时它不再产生相同的值 - 或任何值,就此而言,因此分割错误。