首页
Python
Java
IOS
Andorid
NodeJS
JavaScript
HTML5
【
smart_ptr之shared_ptr
】的更多相关文章
smart_ptr之shared_ptr
智能指针的概念 c++11标准和boost都提供了智能指针的功能.智能指针是普通指针的封装,智能指针是一个对象,对象里面包含了原生指针.可以使用智能指针对象的get()方法可获得封装在里面的原生指针.使用智能指针管理内存,用到智能指针的地方需要统一使用c++11或boost库,切忌混合使用.c++11的智能指针包含在<memory>库,boost库是<boost/smart_ptr>,使用时前者加前缀std::,后者加前缀boost::.在有的智能指针的类里,实现了operator…
boost--smart_ptr库
C++没有类似Java.C#等语言的垃圾回收机制,内存管理是最为头痛的工作. new.delete以及指针的不恰当运用是C++中造成资源获取/释放问题的根源. 智能指针是解决这些问题的一种方案,boost.smart_ptr库提供了六种智能指针,包括: scoped_ptr. scoped_array . shared_ptr . shared_array . weak_ptr . intrusive_ptr 它们都是轻量级对象,速度与原始指针相差无几,都是异常安全的. 要使用smart_ptr…
[boost] : lightweight_test库
lightweight_test轻量级单元测试框架, 只支持最基本的单元测试, 不支持测试用例, 测试套件的概念, 简单小巧, 适合要求不高或者快速测试的工作. 基本用法 需要包含头文件#include <boost/core/lightweight_test.hpp> lightweight_test库定义了五个断言宏 BOOST_TEST(e) 断言表达式成立 BOOST_ERROR(s) 直接断言失败, 输出消息s BOOST_TEST_EQ(e1, e2) 断言两个表达式相等 BOOS…
为什么API多用C而不是C++,为什么C++程序大多不使用异常
读Defective C++随笔 不尽知用兵之害者,则不能尽知用兵之利也 ——<孙子兵法> 1.为什么API多用C而不是C++以前就一直很奇怪,为什么API大都用C的方式提供,即使有C++的接口也只是把C的函数又包一层.既然大家都在用C++的编译器,为什么不直接提供C++的API?当初曾经做过一些编译C++DLL的尝试,印象中只是很麻烦,感觉像是编译器支持不好.其实,最核心的原因在于类的私有成员必须出现在头文件里.每当修改实现时,如果修改了私有成员,那么所有使用该DLL的模块都必须重新编译.这…
c++ shared_ptr 使用注意事项. 1
条款1:不要把一个原生指针给多个shared_ptr管理 int* ptr = new int; shared_ptr<int> p1(ptr); shared_ptr<int> p2(ptr); //logic error ptr对象被删除了2次 这种问题比喻成“二龙治水”,在原生指针中也同样可能发生. 条款2:不要把this指针给shared_ptr class Test{ public: void Do(){ m_member_sp = shared_ptr<Tes…
记录以下boost::shared_ptr的一个使用细节
shared_ptr<T>::operator->返回的是T*类型指针,非const T*指针.因此通过const shared_ptr<T>&类型的ptr可以直接调用T各个原始的方法,不用担心const与非const问题.具体shared_ptr::operator->实现如下,摘自boost1.52.0版本boost\smart_ptr\shared_ptr.hpp T * operator-> () const // never throws { B…
学习笔记:shared_ptr陷阱
条款1:不要把一个原生指针给多个shared_ptr管理 int* ptr = new int; shared_ptr<int> p1(ptr); shared_ptr<int> p2(ptr); //logic error ptr对象被删除了2次 这种问题比喻成“二龙治水”,在原生指针中也同样可能发生. 条款2:不要把this指针给shared_ptr class Test{ public: void Do(){ m_sp = shared_ptr<Test…
Boost使用笔记(Smart_ptr)
我是Word写的,复制过来实在懒得在排版了,有兴趣的朋友可以去我的百度文库看,谢谢 http://wenku.baidu.com/view/34e485e2f61fb7360b4c653e.html Boost使用笔记(Smart_ptr) 概述 Boost库是一个功能强大.构造精巧.跨平台.开源免费的C++程序库,提供了代码编写中所需要的几乎所有常见工具,例如智能指针.bind.正则表达式.xml解析等工具.其代码以泛型编程为基础,且绝大部分代码放在扩展名为hpp的头文件中,以内联的方式引入到…
shared_ptr智能指针源码剖析
(shared_ptr)的引用计数本身是安全且无锁的,但对象的读写则不是,因为 shared_ptr 有两个数据成员,读写操作不能原子化.根据文档 (http://www.boost.org/doc/libs/release/libs/smart_ptr/shared_ptr.htm#ThreadSafety)shared_ptr 的线程安全级别和内建类型.标准库容器.std::string 一样,即: 一个 shared_ptr 对象实体可被多个线程同时读取: 两个的 shared_ptr 实…
Boost源代码学习---shared_ptr.hpp
最近观看Boost库源代码.Boost功能强大的库,但它的许多源代码,十一细读太费时间,毕竟,还有其他东西要学.所以我决定脱脂感兴趣的章节,他们的设计思路和难以理解的地方记录. shared_ptr是Boost里面最有价值的的智能指针. 它封装了一个原生态指针和一个引用计数器,这个引用计数器是一个类shared_count.shared_ptr支持比較运算,重载了operator<,因此其能够用于set和map. 在转换shared_ptr指针时.用***_pointer_cast定义的函数来转…