Code Bye

shared_ptr智能指针是怎么释放资源的?

template<typename T>
class shared_ptr
{
    T *_ptr;
    std::size_t *count;
....
public:
    shared_ptr(T *t=new T):_ptr(t),count(new std::size_t(1){}
....
    ~shared_ptr()
    {
        if(--*count==0)
        {
            //假如本人用的是shared_ptr<vector<string>> str,那么怎么delete _ptr就出错了,这里要怎样才能兼容?
            delete _ptr;               
            delete count;
        }
    }
}
解决方案:5分
内部默认就是普通的delete释放,但可以根据你用的类型封装对应的自定义deletor函数给它。
而vector可以new和delete啊,不知你怎么用的
解决方案:5分
没看明白。什么原版,莫非你本人写了个shared_ptr?那到底是原版的shared_ptr崩了 还是你写的崩了
解决方案:10分
莫非是重新造了一个shared_ptr<>的轮子,没用标准库里的?
解决方案:20分
为什么不参考标准库源代码呢?

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明shared_ptr智能指针是怎么释放资源的?