小编Ben*_*xie的帖子

在共享指针中捕获内存泄漏?

标题几乎说明了一切,我几乎肯定它是复制构造函数或赋值运算符,我很确定它是后者.这是一个非常短的课程,所以我会发布整个事情,任何关于如何处理它的建议都会很好.老实说我在这里也有点过头了,所以任何指向一些可靠阅读的人都会非常感激.

#pragma once

//for non-learning purposes, boost has a good smart pointer
template <class type>
class sPtr
{
private:
    type *p;
    int r; //referenceCount

    void add()
    {
        r++;
    }
    int release()
    {
        return --r;
    }
public:
    sPtr(): p(NULL), r(1) {}
    sPtr(type *pValue): p(pValue)
    {
        add();
    }
    sPtr(const sPtr<type> & sp): p(sp.p), r(sp.r)
    {
        add();
    }
    ~sPtr()
    {
        if(release() == 0)
        {
            delete p;
        }
    }

    type* get()
    {
        return p;
    }

    type& operator*()
    {
        return *p;
    }
    type* operator->()
    { …
Run Code Online (Sandbox Code Playgroud)

c++ memory-leaks shared-ptr assignment-operator

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