使用运算符 = 重新分配共享指针会导致内存泄漏

Reassign a shared pointer with operator = causes memory leak?

本文关键字:指针 共享 泄漏 内存 分配 运算符 新分配      更新时间:2023-10-16

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

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 重新分配更多次,则会有更多问题。谢谢!

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