0

std::map がアクセス違反をすることがありますが、その理由はわかりません! 私は 64 ビット アプリケーションで VS 2010 を使用しています。誰かがアイデアを持っている場合は?

これが私のコールスタックです:

std::_Tree >,0> >::_Lbound(const pureCore::Core::DependencyProperty * const & _Keyval=0x0000000002514244) 1745 行目 + 0xa バイト C++ std::_Tree >,0> >::lower_bound(const pureCore: :Core::DependencyProperty * const & _Keyval=0x0000000002514244) 行 1450 + 0xf バイト C++ std::_Tree >,0> >::find(const pureCore::Core::DependencyProperty * const & _Keyval=0x0000000002514244) 行 1424 + 0x1aバイト C++

これが私のコードです:

AnyObject value = AnyNull;
if (_propertiesValues.find(property) != _propertiesValues.end())
  value = _propertiesValues[property];

ファイル「xtree」の次の行でクラッシュします:「while (!this->_Isnil(_Pnode))」。特別なことは何もないと思います...このコードはほとんどの場合機能します...しかし、(まれに)クラッシュすることがあります!

_Nodeptr _Lbound(const key_type& _Keyval) { // _Keyval 以上の左端のノードを見つける _Nodeptr _Pnode = _Root(); _Nodeptr _Wherenode = this->_Myhead; // 検索に失敗した場合は end()

  while (!this->_Isnil(_Pnode))           if (_DEBUG_LT_PRED(this->comp,

this->_Key(_Pnode), _Keyval)) _Pnode = this->_Right(_Pnode); // 右サブツリーを下降する else { // _Pnode が _Keyval より小さくない、覚えておく _Wherenode = _Pnode; _Pnode = this->_Left(_Pnode); // 左サブツリーを下る }

  return (_Wherenode);    // return best remembered candidate         }
4

0 に答える 0