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

L>Здравствуйте, AndrewJD, Вы писали:


AJD>>1. Если ты не хранишь этот обьект, то пользы от смарт поинтера никакой.

AJD>>2. Вызывающая сторона предполагает, что параметром будет поинтер на row интерфейс, а не какой-то класс. Тебе просто повезло, что размер _com_ptr совпал с размером указателя. Но конструктор никто не вызвал. ИМХО,
L>это ожидаемое поведение.

L>согласен, что от смарта пользы никакой, сделан на автомате в тот момент был, но все же...

L>А насчет данного везения — ох что-то сомневается мне, что так вот повезло с размерами... Моя логика такая:раз вызывается деструктор, то создавался _com_ptr_t. Раз создается _com_ptr_t, значит вызывается конструктор. Раз вызывается конструктор,должен быть аддреф...

Я только что изучил comip.h и во всех конструкторах _com_ptr_t нашел AddRef либо QueryInterface.
Противное было бы странно, уж очень интенсивно их пользуют во всем мире.

Но так ли это, что при создании ты делаешь QueryInterface?
Знаешь ли ты, что CComObject::CreateInstance дает объект с нулевым счетчиком?

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