首页 > 解决方案 > 为什么我会收到警告:不要取消引用可能无效的指针

问题描述

启用 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 集合的引用进行迭代会导致指针无效?

标签: c++cpp-core-guidelines

解决方案


推荐阅读