Визуальный детектор утечек с std::shared_ptr
Я относительно новичок в 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
2 ответа
Трудно сказать без кода, но одна очевидная возможность состоит в том, что у вас есть цикл. Просто используя std::shared_ptr
везде рано или поздно это приведет к проблемам; Это полезный инструмент для конкретных случаев, но он не решит всех ваших проблем.
Нет ничего плохого в том, чтобы создать общий указатель так, как вы показали. Похоже, что детектор утечки сообщает о поддельных утечках или вы используете его неправильно. В качестве примечания рассмотрим использование std::make_shared
вместо явного new
и конструктор общих указателей - как правило, он более эффективен и безопасен.