设为首页 加入收藏

TOP

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

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

  资源管理

  前言

  资源泄露就是程序中常见的事情,这一章主要就是告诉我们如何去消除资源管理问题,值得注意的是,这里的资源不仅是指动态分配内存,其他常见的资源还包括数据库的连接,网络sockets,还有互斥锁等,我们在用完这些资源之后,必须将他们还给系统。尤其是发生异常、程序员维护软件时,会产生这种问题。

  条款13:以对象管理资源

  先看段代码:

  [cpp]

  void test()

  {

  int *t = new int;//获取资源

  …

  delete t;//释放资源

  }

  如果我们在"…"中产生了异常,或者存在return,就可能导致资源的泄露。也许你会说,我很谨慎,我不会让自己的代码出现这种问题。好吧,那如果这是一个项目,之后这段代码可能会被维护人员修改,他可能会在"…"中加入异常,或者return.也许,你又会说,你会将这段代码需要注意的地方写入文档,可是我觉得我们应该把自己当成"客户"(这里指使用这段代码和维护代码的人),我们需要为自己着想,如果我们能做好,就不应该甩手把麻烦的事情留给别人。

  为防止以上的现象,我们可以将资源放入对象中,依赖c++的"析构函数自动调用机制"确保资源被释放。

  [cpp]

  void test

  {

  auto_ptr<int> t (new int);//注意初始化方式

  …

  }//auto_ptr的析构函数自动delete t

  auto_ptr是个只能指针,析构函数会自动对其所指的对象调用delete.

  书中推荐使用auto_ptr和shared_ptr(我在这里就不在介绍这个,有兴趣的可以自己google),但是我们也可以自己写资源管理类,但是其中涉及到需要考虑的细节,将在后面的条款讨论。

       

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

评论

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