【问题标题】:Memory Garbage on vector.erase of pointer [duplicate]vector.erase 指针上的内存垃圾[重复]
【发布时间】:2020-05-08 22:57:52
【问题描述】:

我想知道这样做是否安全:

std::vector<int*> v;
...
//no deleting
v.erase(v.begin());

安全的意思是,这样做不会造成垃圾,因此std::vector&lt;T&gt;::erase 称自己为delete pointer;,或者如果我应该手动完成删除:

std::vector<int*> v;
...
delete v[0];
v.erase(v.begin());

【问题讨论】:

  • 所以你基本上想知道vector在使用指针类型时是否调用delete

标签: c++ memory vector


【解决方案1】:

标准容器,如std::vector,包含原始指针在从容器中删除指针时,不会自动delete 指针指向的东西。如果需要,请改为存储智能指针,即std::unique_ptrstd::shared_ptr

【讨论】:

  • 好的,非常感谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-16
  • 1970-01-01
  • 2011-06-07
  • 1970-01-01
  • 2016-01-26
相关资源
最近更新 更多