2
Мне нужно создать функцию, которая возвращает выделенную переменную shared_ptr. это правильный путь?выделить shared_ptr в функции
typedef boost::shared_ptr<std::vector<char> > sharePtr;
void createPtr(sharePtr &p)
{
p = sharePtr(new std::vector<char>);
}
void test()
{
sharePtr p;
createPtr(p);
}
Контр-рекомендация для `make_shared` заключается в том, что если объект большой (для которого` vector` нет), и если вы используете слабые указатели (чего нет у этого кода), тогда `make_shared` может теряют больше памяти, чем это стоит за время/память, которую он сохраняет. Думаю, я бы сказал об этом. – 2010-12-07 13:08:19