使用运算符 = 重新分配共享指针会导致内存泄漏
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
}
值为 400 的 int 会发生什么情况? 这是内存泄漏吗? 这是一个基本示例,但如果指针指向一个大类而不是 int,那么如果存在内存泄漏就会有问题,如果 SP2 重新分配更多次,则会有更多问题。谢谢!
编辑后,没有泄漏。为值为 400
的int
分配的内存将在分配中为您删除。
相关文章:
- 如何从具有移动语义的类对象中生成共享指针
- 使用共享指针的函数调用,其对象应为 const
- 共享指针和具有自定义删除程序的唯一指针之间的语法差异背后的任何原因
- 如何访问由共享指针保存的类方法?
- 从矢量或地图中删除共享指针
- 使用共享指针时,从共享指针本身释放内存的机制是什么
- 使用共享指针实现复制 c'tor?
- C++/QT:使用指向私有成员的常量指针作为只读数据共享
- 共享指针继承,而不先显式强制转换
- 如何检查类中共享指针的有效性?
- 共享 C++ 的数据成员指针
- std::排序在共享指针的向量上
- 将相同共享指针的副本存储在不同的向量中是否是一种好的做法?
- 在什么情况下,需要共享智能指针而无法使用唯一指针?
- 嵌套类、继承和C++中的共享指针
- <Base> <Derived> 具有相同原始指针共享引用的 shared_ptr 和 shared_ptr 实例是否计数?
- 重载流<<运算符,用于指针/共享指针和其他类型的
- RAW指针共享_ptr
- 指针共享习语
- 将memmove函数与临时指针共享相同的地址