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

Reassign a shared pointer with operator = causes memory leak?

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

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
}

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

经过您的编辑,没有任何泄漏。为 int 分配的值为 400 的内存将在分配中简单地为您删除。