gpt4 book ai didi

visual-c++ - 破坏hash_map时产生崩溃

转载 作者:行者123 更新时间:2023-12-03 16:57:49 24 4
gpt4 key购买 nike

我在应用程序中使用hash_map作为

typedef hash_map<DWORD,CComPtr<IInterfaceXX>> MapDword2Interface;

在主应用程序中,我正在使用此 map 的静态实例
static MapDword2Interface m_mapDword2Interface;

我从其中一台客户端计算机上获得了一个崩溃转储,该崩溃转储指向清除此映射的崩溃

我打开了故障转储,这是调试过程中的程序集
> call        std::list<std::pair<unsigned long const ,ATL::CComPtr<IInterfaceXX> >,std::allocator<std::pair<unsigned long const ,ATL::CComPtr<IInterfaceXX> > > >::clear 
> mov eax,dword ptr [CMainApp::m_mapDword2Interface+8 (49XXXXX)]

这是崩溃转储指向的代码。下面的代码来自STL:list文件
void clear()
{ // erase all

#if _HAS_ITERATOR_DEBUGGING
this->_Orphan_ptr(*this, 0);
#endif /* _HAS_ITERATOR_DEBUGGING */

_Nodeptr _Pnext;
_Nodeptr _Pnode = _Nextnode(_Myhead);
_Nextnode(_Myhead) = _Myhead;
_Prevnode(_Myhead) = _Myhead;
_Mysize = 0;

for (; _Pnode != _Myhead; _Pnode = _Pnext)
{ // delete an element
_Pnext = _Nextnode(_Pnode);
this->_Alnod.destroy(_Pnode);
this->_Alnod.deallocate(_Pnode, 1);
}
}

崩溃指向 this->_Alnod.destroy(_Pnode);以上代码中的语句。

我无法猜测,可能是原因。

有任何想法吗???

我如何确定,即使 map 出了点问题,它也不应该崩溃?

最佳答案

我的假设是:

OLE需要全局范围对OleInitialize / OleUninitialize的调用-但是在销毁OLE内存管理系统后,静态哈希映射也将销毁。因此,请确保在OleUninitialize之前清除了映射。

关于visual-c++ - 破坏hash_map时产生崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3043205/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com