Re[2]: Как умирают повисшие объекты?
От: Аноним  
Дата: 17.02.05 15:59
Оценка:
Здравствуйте, Odi$$ey, Вы писали:

OE>Здравствуйте, <Аноним>, Вы писали:


А>>Этот самый GUI использует COM объект с методом, в который

А>>передается другой COM объект ([in] параметр)
А>>Так вот бормановские врапперы похоже вызывают на один Release
А>>меньше, чем положено и в итоге имею кучу leak'ов.

OE>да, тоже наступали на это дело, если передавать параметром указатель на интерфейс, дебилдер в реализации метода лепит вокруг него свою обертку и при заключении переданного указателя на интерфейс в эту обертку делает AddRef(), но в деструкторе обертки никаких Release() нету. Пришлось вставлять в каждый такой дебилдерный метод принудительный Release() для соблюдения баланса


Блин, а у меня таких мест уже довольно много.
А вот BCB6 похоже генерит нормальные врапперы и как теперь писать
"портабельный" в мире дебилдера код?
Мало того, что принудительный Release() нужен,
так еще и в таком вот стиле.
#if __BORLANDC__ < 0x0560    // BCB5
  pMyComObj->Release();
#endif

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