Необходимо освободить com_ptr_t перед переназначением с CreateInstance? - PullRequest
1 голос
/ 02 сентября 2011

В классе C ++ с членами _com_ptr_t произойдет утечка памяти, если CreateInstance () будет многократно использоваться для одного и того же указателя для получения свежих экземпляров объектов COM, без предварительного выполнения Release ()? Хорошо задокументировано, что количество ссылок уменьшается, когда один из этих интеллектуальных указателей выходит за рамки видимости, и что это не так, когда инкапсулированный указатель имеет значение Detach () ed. MSDN, кажется, не упоминает последствия подсчета ссылок при повторении CreateInstance ().

Ответы [ 2 ]

5 голосов
/ 02 сентября 2011

Никакой утечки не произойдет, поскольку _com_ptr_t вызывает Release() в начале CreateInstance(), что вы можете легко проверить самостоятельно, прочитав _com_ptr_t реализацию.

0 голосов
/ 17 мая 2016

CreateInstance () вызывает _Release () перед вызовом CoCreateInstance ().Пожалуйста, смотрите реализацию внутри.

...