Effective C++ 资源管理总结

Effective C++ 资源管理小结我发现,第一遍读书总是不能清楚的认识到问题的本质,我们还需要回过头去总结,因

Effective C++ 资源管理小结


我发现,第一遍读书总是不能清楚的认识到问题的本质,我们还需要回过头去总结,因此,我决定以后每读一部分的书,写一点的总结,一方面可以让自己整理知识,另一方面方便以后对比思想。

资源管理前言资源泄露就是程序中常见的事情,这一章主要就是告诉我们如何去消除资源管理问题,值得注意的是,这里的资源不仅是指动态分配内存,其他常见的资源还包括数据库的连接,网络sockets,还有互斥锁等,我们在用完这些资源之后,必须将他们还给系统。尤其是发生异常、程序员维护软件时,会产生这种问题。
条款13:以对象管理资源先看段代码:
  • 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 的构造函数。

      std::tr1::shared_ptr<Widget> pw(new Widget); // 在一个单独的语句中创建 Widget                                               // 并存入一个智能指针  processWidget(pw, priority());     // 这样调用就不会泄漏了。、

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