Когда-то давно, то ли в доках, то ли на форумах слышал упоминание, что умные указатели не стоит использовать в циклах.
Чисто теоретически, почему и так ли это?
Не вижу никаких преград для использования в циклах.
Если это так, то как тогда лучше освободить ресурсы, если заранее не известно сколько слотов будут подписаны на сигнал и тем более кто из слотов подпишется последним (что бы в нём освободить)?
SharedPointer должен сам освобождать ресурсы, когда счётчик ссылок упадёт до нуля. Вы не должны это контролировать в обычном случае (а если надо, но тогда уже используйте интрузивные указатели).
Проверьте, нет ли циклических ссылок. Погоняйте программу с анализаторами памяти, Valgrind, например.