使用 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
的内存将在分配中简单地为您删除。
我有一个关于共享指针的基本问题,在下一个示例代码中:
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
的内存将在分配中简单地为您删除。