主要是内存泄漏,忘记释放。 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