请帮助查找我的自定义共享指针类中的错误SharedPtr<T>。我找不到它了。但是代码可以处理泄漏。
我认为是重置方法或operator=方法中的错误。可能无需调用这些方法代码即可工作。我认为是因为 valgrind 没有显示任何泄漏和错误。但是调用这些方法会显示错误,有时会泄漏
#include <iostream>
#include <algorithm>
#include <memory>
using std::cout;
using std::cin;
using std::endl;
template <typename T>
struct SharedPtr
{
explicit SharedPtr(T *ptr = 0) : p_(ptr), c_(0)
{
if (p_) c_ = new size_t(1);
}
~SharedPtr()
{
if (c_ && --*c_ == 0)
{
delete p_;
delete c_;
}
}
SharedPtr(const SharedPtr &p) : p_(p.get()), c_(p.getc())
{
if (c_) { ++*c_; }
}
SharedPtr& operator=(const SharedPtr &p)
{
p_ = p.p_;
c_ = …Run Code Online (Sandbox Code Playgroud)