sp wp 智能指针

本文介绍了C++中的智能指针概念及其实现方式,包括强引用(sp)和弱引用(wp)。通过示例展示了如何使用智能指针来避免内存泄漏,并解释了弱引用在垃圾回收中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

智能指针在C++里大致意思就是 一个对象包含了一个成员指针,当对象不存在时指针所指向的内存也会释放。这也是自动垃圾回收的一个机制。sp 不是智能指针的意思,这里是强引用。wp 弱引用。

这里网上找了几个例子:

Template <typename T>

class SmartPtr{

public:

SmartPtr(T *p = 0):ptr(p){}

~SmartPtr(){delete ptr ;}

private:

Tptr ;

};

通过上面的封装,我们就可以用下面的方式来使用SmartPtr 而不需要担心内存泄露的问题:

SmartPtr<int> pointer(new int) ;

*(pointer.ptr) = 10 ;

为了方便使用,我们可以对操作符进行重载,让智能指针的操作更像是指针:

Toperator*(){return *ptr}

T* operator->(){return ptr}

同时会担心 同一个指针被delete 两次,所以这里也会加一个引用计数,这样一个sp就可以了。

android 里面还出现了wp 这个指针类,实际上他是一个弱引用类型的指针类,弱引用是在.net 以及java 中经常用到的,弱引用是一个对象引用的持有者,使用弱引用后可以维持对对象的引用,但是不会阻止其被垃圾回收。如果一个对象只有弱引用了,那它就成为被垃圾回收的候选对象,就像没有剩余的引用一样,而且一旦对象被删除,所有的弱引用也会被清楚。弱引用适合那些数据 成员特别多,而且重新创建又相对容易的类,也就是俗称的胖子类,建立弱引用可以引用对象,但也不阻止其被垃圾回收,在内存的使用方面取得一定的平衡。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值