2020-12-28 智能指针

主要是内存泄漏,忘记释放。 java使用了垃圾回收技术,不需要人为管理。

C++解决方法:RAII  引用计数 依托栈和析构函数

sharedPtr  强指针,多个智能指针可以共享同一对象;循环引用 需要配合weakptr去修正

uniquePtr  独占式拥有 保证同一时间内只有一个智能指针可以访问该对象。可以移交拥有权。

weakPtr  允许你共享 但是你不拥有该对象 一旦最末一个拥有该对象的智能指针失去了所有权,任何weakptr都会自动变为空。

什么叫引用计数?  深浅拷贝 优缺点结合?

解决重复释放问题;增加一个变量 记录资源使用的次数。 int* m_pCount;当其为0时候 资源释放 避免重复释放。

最后对计数器进行简易封装。把引用技术作为一个新的类来使用。解决了重复释放。 但是一个被修改 全部被修改了  这显然不对的。复用性不好。

解决思路:写时拷贝,当某个共享资源改变时候,需要对资源进行重新拷贝。release一份 然后创建另一份。

自己实现一个简易版的智能指针“

1 用起来像指针  2会自己对资源进行释放  在栈上构建哦

class CSmartPtr

{

CSmartPtr(CStudent* pobj)

m_pobj=pobj;

}

private:

CStudent* m_pObj;  //将资源放入到智能指针类中 作为成员变量 管理起来

}

像一个指针  需要重载 operator


https://blog.csdn.net/albertsh/article/details/82286999

你可能感兴趣的:(2020-12-28 智能指针)