小编Vas*_*nov的帖子

shared_ptr 的问题。我不能毫无错误地创建我的结构

请帮助查找我的自定义共享指针类中的错误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)

c++ shared-ptr

2
推荐指数
1
解决办法
82
查看次数

标签 统计

c++ ×1

shared-ptr ×1