Умные указатели хитры. Первое, что я хотел бы сделать, это проверить ваш код на наличие любого «нового» оператора, которого нет ни в одном макросе.
Тогда вам нужно подумать о том, как используются указатели; если вы передадите умный указатель по ссылке, то счетчик ссылок не увеличится, например.
Еще одна вещь, которую нужно проверить, - это все экземпляры .get (), что является большой проблемой, если вы работаете с устаревшей кодовой базой или другими разработчиками, которые не понимают смысла использования умных указателей! (это больше связано с предотвращением случайных сбоев, чем с сохранением ссылок на память, но стоит проверить)
Кроме того, вы можете подумать, почему вы используете макрос для создания всех интеллектуальных указателей. Увеличить поставку различных умных указателей для разных целей. Существует не один размер подходит для всех решений. Старый добрый std :: auto_ptr подходит для большинства случаев, за исключением хранения в стандартных контейнерах, но вы уже это знали.
Самый очевидный и упускаемый из вида аспект заключается в том, действительно ли вам необходимо что-то «новое». C ++ - это не Java, если вы можете избежать создания динамических объектов, вам лучше это делать.
Если вам повезло работать с * платформой NIX (вы не упоминаете, извините), попробуйте инструмент проверки утечек с Valgrind. Это очень полезно. Существуют аналогичные инструменты для Windows, но часто лучше использовать программное обеспечение.
Удачи.