对于下面的代码,覆盖范围使我可以使用包装对象,然后出现错误(WRAPPER_ESCAPE)

问题描述 投票:0回答:1
...
Object& a = list.front();
list.pop_front();
...

完成上述操作后,我需要稍后使用&a。但是覆盖率提高了免费发行后的使用率。 pop_front()之后使用&a是否有问题?

c++ list memory-management free coverity
1个回答
0
投票

使用

Object& a = list.front();

您使a reference成为列表的开头元素。当您稍后弹出front元素时,该元素会被破坏,从而为您提供对不存在对象的引用。

您应该copy元素代替

Object a = list.front();

或者可能移动

Object a = std::move(list.front());
© www.soinside.com 2019 - 2024. All rights reserved.