Если я использую reinterpret_cast
для преобразования IInspectable*
в Object^
, несу ли я ответственность за выпуск исходного IInspectable*
?
Ясно, что созданный Object^
освободится, когда выйдет за пределы области видимости, поэтому реальный вопрос заключается в том, подразумевает ли reinterpret_cast AddRef, который дает Object^
собственный счетчик ссылок, или он берет на себя ответственность за ссылку, которая у меня уже есть.
Кажется, есть аргументы, которые следует ожидать в любом случае: с одной стороны, операция COM никогда не должна брать на себя счетчики ссылок своих входных указателей, с другой стороны, имя reinterpret_cast
предполагает, что она просто переинтерпретирует мои биты от «необработанного указателя ABI» до «указателя в шляпе, который уже владеет ссылкой на объект», и моя работа будет заключаться в том, чтобы убедиться, что это имеет смысл).