c++ - 为什么我会收到警告:不要取消引用可能无效的指针
问题描述
启用 C++ Core-Guidelines 生命周期检查 (Visual Studio 2019) 后,以下代码会产生我不理解的警告:
std::list<std::string> getKeys(const std::map<std::string, int>& entities)
{
std::list<std::string> rc;
for (auto const& el : entities)
{
rc.push_back(el.first);
}
return rc;
}
警告:
Don't dereference a pointer that may be invalid: '&el->first'.
'el.std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char> > const ,int>::first'
may have been invalidated at line 67* (refers to the for-statement)
谁能解释为什么使用对 const 集合的引用进行迭代会导致指针无效?
解决方案
推荐阅读
- postgresql - 如何连接两个表并创建新列?
- c# - c#中lineInfo不等于多个字符串怎么办?
- javascript - 如何在 Vue JS 2.+ 中使用自定义事件
- java - 如何在一定的行长后转到新行?
- javascript - Visual Studio 代码中的 JavaScript NPM 错误
- c++ - 在抛出 'std::logic_error' what() 的实例后调用终止:basic_string::_M_construct null 无效
- html - 如何在 django 中使用引导模式对话框?
- javascript - Node.js 和浏览器之间的测试行为不同
- android - org.json.JSONException: adr 没有值
- python - aria-label 的 Python Scrapy 提取值