Информация об изменениях

Сообщение shared_ptr с вызовом фабричного метода от 13.01.2017 12:51

Изменено 13.01.2017 12:52 gencoder

shared_ptr с вызовом фабричного метода
Правильно ли я понимаю, что утечек памяти в блоке A нет?
  // ...
  { // начало блока A
    vector<std::shared_ptr<Base>> v;
    v.push_back(std::shared_ptr<Base>(Base::create(23)));
    v.push_back(std::shared_ptr<Base>(Base::create(25)));
    v.push_back(std::shared_ptr<Base>(Base::create(33)));
    for( auto e: v ) e->foo();
  } // конец блока A
  //...
  enum ID { SomeID1=23 /* ... */ };
  Base* Base::create( Id id )
  {
      Base * p;
      switch( id )
      {
          case SomeId1: p = new /* ... */ break;
          // ...
      }
      return p;
  }
shared_ptr
shared_ptr с вызовом фабричного метода
Правильно ли я понимаю, что утечек памяти в блоке A нет?
  // ...
  { // начало блока A
    vector<std::shared_ptr<Base>> v;
    v.push_back(std::shared_ptr<Base>(Base::create(23)));
    v.push_back(std::shared_ptr<Base>(Base::create(25)));
    v.push_back(std::shared_ptr<Base>(Base::create(33)));
    for( auto e: v ) e->foo();
  } // конец блока A
  //...
  enum ID { SomeID1=23 /* ... */ };
  Base* Base::create( ID id )
  {
      Base * p;
      switch( id )
      {
          case SomeId1: p = new /* ... */ break;
          // ...
      }
      return p;
  }
shared_ptr