Сообщение 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 с вызовом фабричного метода
Правильно ли я понимаю, что утечек памяти в блоке 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;
}