我的代码实现中的示例场景如下
我有一张定义为map<int,map<int,object*>*>
的地图。堆中的内部映射具有对象指针。
情景是,
使用(处理)内部地图中的所有元素。我将使用迭代器擦除内部地图内容。但是对象*不会被删除。从地图中删除密钥后,我将进一步使用对象指针。
我的问题是,即使在擦除它在地图中的存在之后,该对象也会存在。据我所知,是的,对象在堆中,即使在地图中擦除后也可以使用它。但是我在执行几分钟后面临着随机崩溃的过程。这让我在这里发布问题。
multimap<ULONG, Class*>::iterator it_top3 = InnerMap->begin();
if (InnerMap->size() >= classLimit)
{
if (it_top3->first <= ClassObj->m_classSize)
{
if (it_top3->second != NULL)
{
delete it_top3->second;
it_top3->second = NULL;
}
InnerMap->erase(it_top3);
InnerMap->insert(pair<ULONG, Class*>(ClassObj->m_classSize, ClassObj));
}
其次,在分析调试diag时,行it_top3->second = NULL;
指向具有访问冲突异常的崩溃点。造成这次事故的可能原因是什么??