1) Согласно этому примеру, вы все делаете правильно.
Если вы используете shared_ptr<X>
для сохранения результата, он будет автоматически удален после того, как ваш shared_ptr
объект выйдет из области видимости (в вашем случае) / не будет иметь больше реальных ссылок (говоря глобально).
2) Это зависит, но наиболее распространенная практика - использовать scoped_ptr
, потому что его конструирование и освобождение памяти происходит намного быстрее, и, используя его в явном виде, подтверждает, что объект действителен только для текущей области видимости 1011 *.
3) Я не уверен, что правильно понял вопрос, но вы можете выполнить действие .reset
для вашего Results
и заполнить его новым результатом запроса.
Кроме того, я уверен, что ваши утечки происходят из памяти, выделенной где-то еще (может быть и в библиотеке) . Возможно, вы не удаляете что-то, связанное с соединителем, см. Документацию.