Если вы используете CComPtr, то это, как правило, главное, что я бы посоветовал, но я нашел кое-что, что могло бы помочь, если вы используете Visual Studio.
В блоге Sara Fords действительно крутоСовет:
Отладка проблем AddRef / Release в VS
Вы можете получить lot информации, зарегистрированной, но основная идея состоит в том, чтобы отследить вашувызовы addref / release в Visual Studio, и вы можете искать несоответствующие пары AddRef / Release.
Возможно, это немного трудоемко, но выглядит довольно хитрой идеей.
Редактировать 2: Хорошоmorning;
Хорошо, если вы не используете DllGetClassObject, это не будет ссылочной проблемой.Использование IUknowns в качестве параметров in / out имеет предостережение;Это объявление MSDN для AddRef:
Вызывайте этот метод для каждой новой копии указателя интерфейса, которую вы делаете.Например, если вы передаете копию указателя обратно из метода, вы должны вызвать AddRef для этого указателя.Вы также должны вызвать AddRef для указателя перед передачей его в качестве входного параметра в метод;метод вызовет IUnknown :: Release перед копированием выходного значения поверх него.
Аналогично для release:
Вызывайте этот метод, когда вам больше не нужноиспользуйте указатель на интерфейс.Если вы пишете метод, который принимает параметр in-out, вызовите Release для указателя, который вы передаете, прежде чем копировать значение out в его начало.