C++ std::映射访问冲突,在64位应用程序上使用VS 2010

C++ std::映射访问冲突,在64位应用程序上使用VS 2010,c++,access-violation,stdmap,C++,Access Violation,Stdmap,有时,std::map会造成访问冲突,我不知道为什么!我在64位应用程序上使用VS2010。如果有人有主意 这是我的调用堆栈: AnyObject value = AnyNull; if (_propertiesValues.find(property) != _propertiesValues.end()) value = _propertiesValues[property]; std::_Tree>,0>:_lbund(常数) pureCore::Core::DependencyPr

有时,std::map会造成访问冲突,我不知道为什么!我在64位应用程序上使用VS2010。如果有人有主意

这是我的调用堆栈:

AnyObject value = AnyNull;
if (_propertiesValues.find(property) != _propertiesValues.end())
  value = _propertiesValues[property];
std::_Tree>,0>:_lbund(常数) pureCore::Core::DependencyProperty*常量& 第1745行+0xA字节C++ C++ STD::树>0>::下限(const) pureCore::Core::DependencyProperty*常量& (1450)+0xF字节C++ cd:::“树>,0 >::查找(const) pureCore::Core::DependencyProperty*常量& _Keyval=0x0000000002514244)行1424+0x1a字节C++

这是我的代码:

AnyObject value = AnyNull;
if (_propertiesValues.find(property) != _propertiesValues.end())
  value = _propertiesValues[property];
它在文件“xtree”的以下行崩溃:“while(!this->_Isnil(_Pnode))”。我想没有什么特别的。。。此代码大部分时间都有效。。。但有时(很少)它会崩溃

_Nodeptr\u Lbound(const key\u type&\u Keyval){//查找最左边的节点 不小于_Keyval _Nodeptr _Pnode=_Root();_Nodeptr _Wherenode=this->\u Myhead;//如果搜索失败,则结束()

  while (!this->_Isnil(_Pnode))           if (_DEBUG_LT_PRED(this->comp,
此->_键(_Pnode),_Keyval)) _Pnode=this->_Right(_Pnode);//右下子树else {//_Pnode不小于_Keyval,记住它 _其中node=\u Pnode; _Pnode=this->_Left(_Pnode);//下降左子树 }

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

这不是你的调用堆栈,也不是你的代码。这是调用堆栈中的两行和代码中的两行。我可以给你两个字的答案:“这是因为”。如果你想要剩下的答案,你必须给我们剩下的相关信息。;)我在问题描述中添加了一些注释。谢谢“有时”听起来你可能有一些内存损坏。顺便问一下,你可能有一些竞争条件吗?比如一个线程运行此代码,另一个线程删除从映射中?您发布的代码来自标准库,听起来很奇怪,但您可能认为它可以工作。问题是在您的代码中调用堆栈的更深处。您在那里做了一些事情,导致映射爆炸,因此您需要向我们展示您的代码,而不是
std::map
:)