C++指针的新需求

 

指针使用中的根本问题:
1. 内存泄漏;
2. 野指针(指针指向已经被无效的内存上);
尤其是当多个指针指向同一个内存区域的时候, 哪个指针来负责析构, 是最头疼的事情了.
针对这种情况, 应该先引出指针的所有权问题:
指针指向的内存谁来释放, 谁就是拥有所有权.

分三类情况:
1. 一个指针有清晰的所有权;
2. 几个指针共有所有权;
3. 一些指针只有引用权;

共享所有权指针的需求:
ViSharePtr m_sp1 = new ViObj;
m_sp2 = m_sp1;
m_sp1 = NULL;//! 因为有其他人享有这个所有权, 所以不能执行析构
m_sp2;//! 还是有效的
m_sp2 = NULL;//! 执行析构
实现方式: 引用计数器

引用型指针
ViOwnPtr m_op = new ViObj;//! 所有权指针
ViRefPtr m_rp = m_op;//! 引用指针
delete m_op;
assert(m_rp == NULL);//! 对象析构之后, 所有引用指针置空;
实现方式: 引用列表

Tip:
指针命名:
 1. _rp_ 引用指针
 2. _op_ 所有权指针
 3. _sp_ 共享指针

引用型指针的使用范围:
 回调对象;
 消息对象;
 持有指针状态判断;

[Author: Yisa 意帅]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值