C++指针的新需求

来源:互联网 发布:python 查看数据类型 编辑:程序博客网 时间:2024/05/01 09:28
 

指针使用中的根本问题:
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 意帅]

原创粉丝点击