boost::shared_ptr shared_from_this
需要将指针再构造为一个shared_ptr时, 可以让类继承自enable_shared_from_this; 然后类内部使用shared_from_this()生成一个shared_ptr。
不能直接将this构造为一个shared_ptr,因为有可能其他的shared_ptr已经包含了this; 这种情况下, 相当于使用raw pointer构造了多个shared_ptr、 会多次释放。
P *p = new P;
shared_ptr p1(p);
shared_ptr p2(p);
error。。。。会导致p被多次delete。
转
http://www.cnblogs.com/lzjsky/archive/2011/05/05/2037363.html
http://blog.csdn.net/salutlu/article/details/12515877
http://www.cnblogs.com/livingintruth/archive/2012/03/05/2367253.html
http://hi.baidu.com/cpuramdisk/item/7c2f8d77385e0f29d7a89cf0
我在写asio过程中, 基本上都碰到过了。
1) 同时也解释了在构造函数中不能调用shared_from_this()的错误,我写asio程序时想在构造中发起异步connect,结果运行出错。。。 无意中招。
2) 定义在栈上的对象、或者没有使用shared_ptr管理的raw pointer, 无需继承自enable_shared_from_this、不能调用shared_from_this。
asio::async_read(socket,...)
socket.async_read_some
两者区别:
asio::async_read填充满buffer或者符合指定条件才返回
socket.async_read_some读到数据就返回。
from http://blog.csdn.net/hbhhww/article/details/7469923
boost::shared_ptr shared_from_this相关推荐
- boost::shared_ptr相关的测试程序
boost::shared_ptr相关的测试程序 实现功能 C++实现代码 实现功能 boost::shared_ptr相关的测试程序 C++实现代码 #include <boost/confi ...
- boost::shared_ptr用法测试程序
boost::shared_ptr用法测试程序 实现功能 C++实现代码 实现功能 boost::shared_ptr用法测试程序 C++实现代码 #include <boost/config. ...
- boost学习之boost::shared_ptr
Boost智能指针--shared_ptr boost::scoped_ptr虽然简单易用,但它不能共享所有权的特性却大大限制了其使用范围,而boost::shared_ptr可以解决这一局限.顾名思 ...
- “错误 C1083 无法打开包括文件: “boost/shared_ptr.hpp”: No such file or directory”解决办法
我觉得此类相关的 C1083错误的解决方法类似,可以通用借鉴 本人在学习PCL,在学习运用ExtractIndices滤波器从一个点云中提取一个子集时,程序报错: "错误 C1083 无法打 ...
- boost::shared_ptr文档翻译
shared_ptr: 共享所有权 原文链接 描述 模版类 shared_ptr 存储动态构造对象的指针,通常是由C++ new语句完成的.这个对象指针在最后一个持有指针所有权的shared_ptr被 ...
- boost shared_ptr基本用法介绍
一.介绍 shared_ptr包装了new操作符在堆上分配的动态对象,但他实现的是计数型的智能指针,shared_ptr早期的名字就是counter_ptr,可以自由拷贝和赋值,在任意的地方共享它,当 ...
- boost shared_ptr线程安全性
转 http://blog.csdn.net/jiangfuqiang/article/details/8292906 1 同一个shared_ptr对象可以被多线程读 2 多个shared_pt ...
- Boost智能指针——shared_ptr
boost::scoped_ptr虽然简单易用,但它不能共享所有权的特性却大大限制了其使用范围,而boost::shared_ptr可以解决这一局限.顾名思义,boost::shared_ptr是可以 ...
- (六)boost库之内存管理shared_ptr
1.shared_ptr的基本用法 boost::shared_ptr<int> sp(new int(10)); //一个指向整数的shared_ptr assert(sp.unique ...
最新文章
- Django学习笔记2
- python request.post 字典参数以json_Python requests.post方法中data与json参数区别详解
- linux之路由知识之ip route 命令中的疑惑
- kali mysql停止服务器_MySQL 的主从复制(高级篇)
- ML《决策树(一)ID3》
- 游戏会记录某个api的调用_专家坐诊丨老出BUG怎么办?游戏服务器常见问题的解决方法分享...
- python接口自动化(二十)--token登录(详解)
- 大数据与Hadoop的区别
- 当大家都不理解你的时候,就是你成就的捷径
- 百度地图 绘制运动轨迹_百度地图创新破局:声音个性表达、出行精准预估与全球无碍...
- python搜索关键词自动提交_简单爬虫:调用百度接口,实现关键词搜索(python_003)...
- python3.6实现的A星算法
- 希尔密码(Hill)
- 坐标转换工具类:84坐标系,火星坐标系,与百度坐标系之间的互相转换
- Linux -- 代理服务器(Squid Server)的配置与应用1
- 三种代码生成炫酷代码雨(推荐)
- 消息服务器待办事项数据库,关联联系信息的工作管理系统及其方法
- 永恩上线服务器维护,LOL10.16永恩BUG商城问题介绍-LOL10.16永恩BUG商城问题有哪些_牛游戏网...
- 抖音创作规范_抖音创作内容调整提示怎么办?应该怎么解决
- 18.AtomicReference、AtomicStampReference底层原理。多个变量更新怎么保证原子性?CAS的ABA问题怎么解决?