我有一个关于共享指针的基本问题,在下一个示例代码中:
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被重新分配更多次则会更多。 谢谢!
答案 0 :(得分:2)
编辑完成后,没有泄漏。为int
分配的值为400
的内存将在分配中为您删除。