我已经坚持了很长时间。我的代码很大,我尽力抽象出有问题的代码。
我正在用 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 行代码 intriguers 错误的Segmentation fault
。
我打印出 myMap 中的元素,包括index
所指向的interestingInfo 的地址和地址Info
(或者说,Info
它本身的值),
index1 0x9765ad8
...
第二次访问,打印出同样的内容:
index1 0x98ba128
......
指针的值Info
改变了!我猜这个改动会让 line3 崩溃,
我现在很确定我没有对 做任何事情myMap
,但是为什么指针作为一个元素被改变了呢?
请帮我!非常感谢!