设为首页 加入收藏

TOP

Effective C++ 资源管理小结(四)
2013-01-25 17:51:26 来源: 作者: 【 】 浏览:1300
Tags:Effective    资源管理 小结

 

  条款16:成对使用new和delete时采用相同形式

  这个没什么好说的,简单的说,就是如果你在new表达式中使用[],必须在相应的delete表达式中也使用[].如果你在new表达式中不使用[],一定不要在相应的delete表达式中使用[] .

  特别要注意的就是使用typedef时,

  [cpp]

  typedef std::string AddressLines ;

  std::string* pal = new AddressLines; //注意,"new AddressLines"返回一个string*,就像"new string "一样

  delete pal; //行为未定义

  delete [] pal; //很好

  条款17:以独立语句将new对象置入智能指针

  [cpp]

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

  可能会导致资源的泄露,为什么呢?

  因为语序的问题!

  这个语句总共完成了3件事情:

  调用 priority .

  执行 "new Widget" .

  调用 tr1::shared_ptr 的构造函数。

  他们的操作顺序有很大的弹性,如果按以下顺序执行:

  1. 执行 " new Widget " .

  2. 调用 priority .

  3. 调用 tr1::shared_ptr 的构造函数。

  [cpp]

  std::tr1::shared_ptr<Widget> pw(new Widget); // 在一个单独的语句中创建 Widget

  // 并存入一个智能指针

  processWidget(pw, priority());     // 这样调用就不会泄漏了。、

  总结:这一章就这么结束了,感觉学到蛮多的,我发现在总结的过程中,将作者的话转换出来,也能够收获一些东西,以后要写写。

          

首页 上一页 1 2 3 4 下一页 尾页 4/4/4
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇表达式和基本语句 下一篇poj2728-最小比率生成树

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: