_loadedFileNames的定义如下:
std::unordered_map<std::string, LoadedFileData*>* _loadedFileNames;
LoadedFileData 是一个结构体,具体实现忽略。
for (auto it = _loadedFileNames->begin(); it != _loadedFileNames->end();)
{
LoadedFileData*& lfd = it->second;
if(true)
{
it = _loadedFileNames->erase(it);
lfd-> (*这个地方会出错!!!!,因为上面 lfd 是使用的 it->second,上一句已经改变了it的地址,所以it->second也发生了改变)
}
else
{
++it;
}
}
在erase(it) 之后, 再次使用 lfd这个指针会发现指向的内容已经错误了。