【发布时间】:2020-01-24 06:41:52
【问题描述】:
...
Object& a = list.front();
list.pop_front();
...
完成上述操作后,我需要使用 &a。但覆盖率正在提高免费发行后的使用率。执行 pop_front() 后使用 &a 有问题吗?
【问题讨论】:
标签: c++ list memory-management free coverity
...
Object& a = list.front();
list.pop_front();
...
完成上述操作后,我需要使用 &a。但覆盖率正在提高免费发行后的使用率。执行 pop_front() 后使用 &a 有问题吗?
【问题讨论】:
标签: c++ list memory-management free coverity
有
Object& a = list.front();
您将a reference 设置为列表的最前面的元素。当您稍后弹出前面的元素时,它会被破坏,留下对不存在的对象的引用。
你应该复制这个元素
Object a = list.front();
或者可能移动它
Object a = std::move(list.front());
【讨论】: