template<class T> class shared_ptr{ public: T& operator*( ) const {return *px;} T* operator->( ) const {return px;} shared_ptr(T* p) : px(p) { } priva ...
分类:
编程语言 时间:
2018-09-02 23:59:35
阅读次数:
299
第12章 动态内存 12.1 智能指针 shared_ptr<T> make_shared<T>(args) 直接初始化 new int(10); 默认初始化 new int; 值初始化 new int(); 由内置指针(而不是智能指针)管理的动态内存在被显示释放前一直都会存在。 最好坚持只使用智能 ...
分类:
编程语言 时间:
2018-08-26 16:49:20
阅读次数:
190
整理一下c++中shared_ptr,weak_ptr,unique_ptr三种指针的使用案例和注意事项,让程序资源更加案例,在标准库中,需要包含<memory>,在boost库中, 一. 智能指针unique_ptr 与shared_ptr相似,区别在于unique_ptr是独立拥有对象权,因此只 ...
分类:
编程语言 时间:
2018-08-18 19:37:16
阅读次数:
220
简介 为了解决c++程序容易造成内存泄漏的问题,c++11提供了3种智能指针:std::unique_prt, std::shared_ptr, std::weak_ptr。智能指针的原理就是,将一个申请好的内存地址保存在智能指针结构体内部,然后把智能指针保存在栈上。当智能指针出了作用域后,由于栈上 ...
分类:
编程语言 时间:
2018-08-09 00:35:47
阅读次数:
225
只有2种成员 值成员; 指针成员; 依实现可分为raw pointer / shared_ptr; 现在,仅考虑第③种:资源对象共享 角度来考虑拷贝控制 类的两种语义:值语义、似指针 编译器提供的default版本的copy constructor/ copy assignment的语义: 1. 拷 ...
分类:
其他好文 时间:
2018-06-29 10:54:24
阅读次数:
172
记住: 好的接口容易被正确使用,不容易被误用。你应该在你的所有接口中努力达成这些性质。 促进正确使用的办法包括接口的一致性,以及与内置类型的行为兼容。 阻止误用的办法包括建立新类型,限制类型上的操作,束缚对象值,以及消除客户的资源管理责任。 tr1::shared_ptr支持定制型删除器。这可被用来 ...
分类:
编程语言 时间:
2018-06-23 19:05:03
阅读次数:
144
记住: APIs往往要求访问原始资源,所以每一个RAII类应该提供一个“取得其所管理之资源”的办法。 对原始资源的访问可能经由显示转换或隐式转换。一般而言显示转换比较安全,但隐式转换对客户比较方便。 tr1::shared_ptr和auto_ptr重载了指针取值操作符 (operator->和ope ...
分类:
编程语言 时间:
2018-06-18 17:05:48
阅读次数:
211
记住: 为防止资源泄漏,请使用RAII对象,它们在构造函数中获得资源并在析构函数中释放资源。 两个常被使用的RAII类分别是tr1::shared_ptr和auto_ptr。前者通常是较佳选择,因为其copy行为比较直观。若选择auto_ptr,复制动作会使它(被复制物)指向null。 使用auto ...
分类:
编程语言 时间:
2018-06-18 13:29:41
阅读次数:
169
_Mutex_base _Sp_counted_base_Impl _Sp_deleter __shared_count __weak_count __shared_ptr shared_ptr __weak_ptr weak_ptr 类型声明 继承关系 其中,很明显的可以看出,shared_ptr ...
分类:
编程语言 时间:
2018-06-16 20:01:55
阅读次数:
245
前言 最近一段时间看代码,里面用到了C++的智能指针,发现自己竟然看不懂代码在表达什么意思,所以专门抽个时间恶补一下自己这方面欠缺的知识。 参考书籍《深入应用C++11:代码优化与工程级应用》 智能指针 C++11提供了3种智能指针: std::shared_ptr、 std::uniq_ptr s... ...
分类:
编程语言 时间:
2018-06-05 15:19:29
阅读次数:
247