• 【17】以独立语句将newed对象置入智能指针


    1、为什么?

      考虑下面的情况:方法声明为void processWidget(shared_ptr<Widget> pw,int priority)。

      调用方法 processWidget(shared_ptr<Widget> (new Widget), getPriority()),在调用方法之前,要做三件事:

      a、执行new Widget

      b、调用shared_ptr的构造方法

      c、调用方法getPriority()

      可问题是:C++不保证上面的执行顺序(C#,Java保证)。那么问题就来了,如果是acb的执行顺序,并且c步骤异常,那么new出来的资源还没有放进资源管理类,导致内存泄漏。

    2、如何解决上面的问题?

      分开上面的语句,shared_ptr<Widget> pw(new Widget);

              processWidget(pw, getPriority())

  • 相关阅读:
    用户调查报告
    beta冲刺总结
    beta冲刺第七天
    beta冲刺第六天
    beta冲刺第五天
    beta冲刺第四天
    beta冲刺第三天
    beta冲刺第二天
    beta冲刺第一天
    简单的密码管理器(Python)(待完善)
  • 原文地址:https://www.cnblogs.com/nzbbody/p/3512774.html
Copyright © 2020-2023  润新知