Re[7]: Ошибка с подсчетом ссылок
От: Лазар Бешкенадзе СССР  
Дата: 04.10.06 12:51
Оценка:
Здравствуйте, lol4ever, Вы писали:


ЛБ>>Я только что изучил comip.h и во всех конструкторах _com_ptr_t нашел AddRef либо QueryInterface.

ЛБ>>Противное было бы странно, уж очень интенсивно их пользуют во всем мире.

ЛБ>>Но так ли это, что при создании ты делаешь QueryInterface?

ЛБ>>Знаешь ли ты, что CComObject::CreateInstance дает объект с нулевым счетчиком?

ЛБ>>Лазар


L>знаю, поэтому сразу после создания в сервере делаю QueryInterface — и интерфейс пускай лежит, и счетчик = 1, чтобы работать с объектом можно было.

L>НО потом мне приходится делать дополнительный аддреф, дабы после возврата из события объект жив остался.
L>Сейчас заменил входной параметр функции-обработчика на просто ВашИнтерфейс*.

Я не совсем понял, что здесь имеется ввиду, формальный параметр или фактический аргумент.

L>Все работает, ссылки не теряются, как и следовало ожидать. Но если опять заменю параметр на ВашИнтерфейсPtr — получу потерянную ссылку.


L>Соответственно получается, что не используется конструктор... Или как?.. Не понимаю =(


L>ЗЫ

L>могу привести примерный код

Это, наверно было бы понятнее.

Лазар
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.