私はこれに非常に長い間立ち往生しています。私のコードは大きいので、問題のあるコードを抽象化するために最善を尽くします。
私は 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
、 が指す興味のある情報を取得できますが、同じオブジェクトが 2 番目のラウンドでアクセスされると、3 行目のコード intriguers エラーが発生します。のSegmentation fault
。
myMap の要素を出力します。これindex
には、interestedInfo が指すアドレスInfo
(つまり、Info
それ自体の値)が含まれます。
index1 0x9765ad8
...
2 回目のアクセスでは、同じ内容を出力します。
index1 0x98ba128
......
ポインタの値Info
が変更されました! この変更により line3 がクラッシュすると思いますが、
に対して何もしていないことは確かですがmyMap
、要素としてのポインターが変更されたのはなぜですか?
私を助けてください!どうもありがとう!