【问题标题】:Error: “Wrapper object use after free (WRAPPER_ESCAPE)”错误:“释放后使用包装器对象 (WRAPPER_ESCAPE)”
【发布时间】:2020-01-24 06:41:52
【问题描述】:
...
Object& a = list.front();
list.pop_front();
...

完成上述操作后,我需要使用 &a。但覆盖率正在提高免费发行后的使用率。执行 pop_front() 后使用 &a 有问题吗?

【问题讨论】:

    标签: c++ list memory-management free coverity


    【解决方案1】:

    Object& a = list.front();
    

    您将a reference 设置为列表的最前面的元素。当您稍后弹出前面的元素时,它会被破坏,留下对不存在的对象的引用。

    你应该复制这个元素

    Object a = list.front();
    

    或者可能移动

    Object a = std::move(list.front());
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多