Я относительно новичок в shared_ptr. Я использую визуальный детектор утечек, и я получаю ошибки в конце времени выполнения при предоставлении мне следующего кода в качестве утечки памяти:
std::shared_ptr<the_type>(new the_type(the_parameter))
Должен ли я назвать что-то еще, как удалитель или даже shared_ptr::reset()
Это визуальный детектор утечки, который сообщает мне о ложной утечке, или он работает до shared_ptr
на самом деле удаляется?
Благодарю.
примечание: я использую vld 2.2.3, VS2012, Windows 7/8
Трудно сказать без кода, но одна очевидная возможность состоит в том, что у вас есть цикл. Просто используя std::shared_ptr
везде рано или поздно это приведет к проблемам; это полезный инструмент для конкретных случаев, но он не решит всех ваших проблем.
Нет ничего плохого в том, чтобы создать общий указатель так, как вы показали. Похоже, что детектор утечки сообщает о поддельных утечках или вы используете его неправильно. В качестве примечания рассмотрим использование std::make_shared
вместо явного new
и конструктор общих указателей — как правило, он более эффективен и безопасен.