Визуальный детектор утечек с 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 и конструктор общих указателей - как правило, он более эффективен и безопасен.

Другие вопросы по тегам