对于函数:

int priority();

void processWidget(std::tr1::  shared_ptr<Widget> pw,int priority);

调用以上函数

processWidget(new Widget,priority());

以上调用错误,因为shared_ptr构造函数需要一个原始指针,但该构造函数是个explicit构造函数,无法进行隐式转换。

而且其调用顺序也无法确定。

所以,我们一般使用分离语句,创建Widget,然后置入只能指针中。最后再将此智能指针传给processWidget。

即:

std:: tr1::  shared_ptr<Widget> pw(new Widget);

processWidget(pw,priority()); // 这个调用动作绝不至于造成泄露。

记住:

       以独立语句将newed对象存储与智能指针中。如果不这样做,一旦异常被抛出,有可能导致难以察觉的资源泄露。

最新文章

  1. redis的安装及使用
  2. NodeJS(node.exe, npm, express, live-server)安装
  3. Atitit.阿里云c盘 系统盘爆满解决方案
  4. Java 控制反转和依赖注入模式【翻译】【整理】
  5. bzoj1567: [JSOI2008]Blue Mary的战役地图
  6. request和response的中文乱码问题
  7. 最核心4大NFC技术规范详解
  8. 一个小型的DBHelper的诞生(1)
  9. HTML&amp;JS笔记(1)
  10. sublime与Emment
  11. Vue-Methods中使用Filter
  12. PHP MySQL Order By 关键词
  13. hadoop配置项笔记 - yarn
  14. HDU 5333 Undirected Graph(动态树)
  15. 软件推荐-有限元开发软件FELAC
  16. JavaScript中的递归
  17. beego 初体验 - orm - 增删改查
  18. 内存大小设置 Java heap space错误
  19. C语言学习 - 字节对齐
  20. Axure学习了解

热门文章

  1. 爬虫cookie
  2. BZOJ 2725: [Violet 6]故乡的梦
  3. IOS 自动布局-UIStackPanel和UIGridPanel(四)
  4. Linux暂停和恢复进程
  5. python 字典 key 和value 互换
  6. 【Luogu】P1393动态逆序对(树套树)
  7. BZOJ 3750: [POI2015]Pieczęć 【模拟】
  8. 算法复习——LCT(bzoj2049洞穴勘测)
  9. annotation之@Autowired、@Inject、@Resource三者区别
  10. (转)WaitForSingleObject函数的使用