用operator =重新分配共享指针导致内存泄漏?

时间:2017-06-21 12:23:56

标签: c++ c++11 memory-leaks shared-ptr

我有一个关于共享指针的基本问题,在下一个示例代码中:

int main() {
 std::shared_ptr<int> sp;  // empty
 std::shared_ptr<int> sp2;
 sp.reset (new int);
 sp2.reset (new int);
 *sp=10;
 *sp2=400;
  sp2=sp;

 std::shared_ptr<int> sp3;
 sp3=sp1;
 //what happens with the int of value 400?
 //more code
}

值400的int会发生什么?这是内存泄漏吗?这是一个基本的例子,但如果指针指向一个大类而不是int,那么如果存在内存泄漏则会出现问题,如果sp2被重新分配更多次则会更多。 谢谢!

1 个答案:

答案 0 :(得分:2)

编辑完成后,没有泄漏。为int分配的值为400的内存将在分配中为您删除。