需要将指针再构造为一个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相关推荐

  1. boost::shared_ptr相关的测试程序

    boost::shared_ptr相关的测试程序 实现功能 C++实现代码 实现功能 boost::shared_ptr相关的测试程序 C++实现代码 #include <boost/confi ...

  2. boost::shared_ptr用法测试程序

    boost::shared_ptr用法测试程序 实现功能 C++实现代码 实现功能 boost::shared_ptr用法测试程序 C++实现代码 #include <boost/config. ...

  3. boost学习之boost::shared_ptr

    Boost智能指针--shared_ptr boost::scoped_ptr虽然简单易用,但它不能共享所有权的特性却大大限制了其使用范围,而boost::shared_ptr可以解决这一局限.顾名思 ...

  4. “错误 C1083 无法打开包括文件: “boost/shared_ptr.hpp”: No such file or directory”解决办法

    我觉得此类相关的 C1083错误的解决方法类似,可以通用借鉴 本人在学习PCL,在学习运用ExtractIndices滤波器从一个点云中提取一个子集时,程序报错: "错误 C1083 无法打 ...

  5. boost::shared_ptr文档翻译

    shared_ptr: 共享所有权 原文链接 描述 模版类 shared_ptr 存储动态构造对象的指针,通常是由C++ new语句完成的.这个对象指针在最后一个持有指针所有权的shared_ptr被 ...

  6. boost shared_ptr基本用法介绍

    一.介绍 shared_ptr包装了new操作符在堆上分配的动态对象,但他实现的是计数型的智能指针,shared_ptr早期的名字就是counter_ptr,可以自由拷贝和赋值,在任意的地方共享它,当 ...

  7. boost shared_ptr线程安全性

    转   http://blog.csdn.net/jiangfuqiang/article/details/8292906 1 同一个shared_ptr对象可以被多线程读 2 多个shared_pt ...

  8. Boost智能指针——shared_ptr

    boost::scoped_ptr虽然简单易用,但它不能共享所有权的特性却大大限制了其使用范围,而boost::shared_ptr可以解决这一局限.顾名思义,boost::shared_ptr是可以 ...

  9. (六)boost库之内存管理shared_ptr

    1.shared_ptr的基本用法 boost::shared_ptr<int> sp(new int(10)); //一个指向整数的shared_ptr assert(sp.unique ...

最新文章

  1. Django学习笔记2
  2. python request.post 字典参数以json_Python requests.post方法中data与json参数区别详解
  3. linux之路由知识之ip route 命令中的疑惑
  4. kali mysql停止服务器_MySQL 的主从复制(高级篇)
  5. ML《决策树(一)ID3》
  6. 游戏会记录某个api的调用_专家坐诊丨老出BUG怎么办?游戏服务器常见问题的解决方法分享...
  7. python接口自动化(二十)--token登录(详解)
  8. 大数据与Hadoop的区别
  9. 当大家都不理解你的时候,就是你成就的捷径
  10. 百度地图 绘制运动轨迹_百度地图创新破局:声音个性表达、出行精准预估与全球无碍...
  11. python搜索关键词自动提交_简单爬虫:调用百度接口,实现关键词搜索(python_003)...
  12. python3.6实现的A星算法
  13. 希尔密码(Hill)
  14. 坐标转换工具类:84坐标系,火星坐标系,与百度坐标系之间的互相转换
  15. Linux -- 代理服务器(Squid Server)的配置与应用1
  16. 三种代码生成炫酷代码雨(推荐)
  17. 消息服务器待办事项数据库,关联联系信息的工作管理系统及其方法
  18. 永恩上线服务器维护,LOL10.16永恩BUG商城问题介绍-LOL10.16永恩BUG商城问题有哪些_牛游戏网...
  19. 抖音创作规范_抖音创作内容调整提示怎么办?应该怎么解决
  20. 18.AtomicReference、AtomicStampReference底层原理。多个变量更新怎么保证原子性?CAS的ABA问题怎么解决?

热门文章

  1. 【多线程】1.条件变量--std::condition_variable
  2. 微博收藏(机器学习探讨)(二)
  3. String hashCode 方法为什么选择数字31作为乘子
  4. Java多线程间的通信
  5. mysql dba系统学习(3)mysql的启动停止
  6. jQuery工具方法
  7. 作为怀孕的亲历者,你觉得最值得分享的经验或者技巧是什么?
  8. 概率统计:第三章 多维随机变量及其分布
  9. Python爬虫入门(4):Urllib库的高级用法
  10. 关于知识整理、积累与记忆