0

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

我正在用 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,但是为什么指针作为一个元素被改变了呢?

请帮我!非常感谢!

4

1 回答 1

0

我认为您的自定义哈希算法可能是可疑的。我想有些东西会导致它在您访问它的不同时间产生不同的结果(也许您在两者之间更改了一些东西?)这样当您在该键上访问它时它不再产生相同的值 - 或任何值,就此而言,因此分段错误。

于 2013-03-30T23:12:38.983 回答