zoukankan      html  css  js  c++  java
  • 以独立的语句将new对象置入智能指针

    以独立的语句将newed对象置入智能指针:

    processWidget(std::tr1::share_ptr<Widget>(new Widget) , priority());
    

    我们在这使用对象管理式资源,却可能造成资源的泄露。
    上面主要有3三件事情需要完成:

    • priority()

    • new Widget

    • share_ptr的构造函数
      但是在C++中无法确定他们的调用顺序,于是可能出现下面这种:

    • new Widget

    • priority()

    • share_ptr的构造函数
      万一priority的调用发生异常,由于还未置入share_ptr ,那么new Widget的指针会遗失,造成资源泄露。
      因此最好以独立的语句将newed对象置入智能指针中

    std:tr1::share_ptr<Widget> p(new Widget);
    processWidget(p , priority())
    

    参考:
    Effective C++

  • 相关阅读:
    什么是IOC
    spring的作用
    什么是spring框架?
    72
    71
    70
    69
    68
    67
    66
  • 原文地址:https://www.cnblogs.com/Przz/p/6591075.html
Copyright © 2011-2022 走看看