Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Примечание.
Библиотека активных шаблонов (ATL) продолжает поддерживаться. Однако мы больше не добавляем функции или обновляем документацию.
Сам COM не пытается автоматически удалить объект из памяти, когда он думает, что объект больше не используется. Вместо этого программист объектов должен удалить неиспользуемый объект. Программист определяет, можно ли удалить объект на основе счетчика ссылок.
COM использует IUnknown методы AddRef и Release для управления числом ссылок на интерфейсы объекта. Общие правила для вызова этих методов:
Каждый раз, когда клиент получает указатель интерфейса,
AddRefдолжен вызываться в интерфейсе.Когда клиент завершит работу с указателем интерфейса, он должен вызвать
Release.
В простой реализации каждый вызов AddRef увеличивает переменную счетчика, а каждый вызов Release уменьшает ее внутри объекта. Когда число возвращается к нулю, интерфейс больше не имеет пользователей и может удалить себя из памяти.
Подсчет ссылок также можно реализовать таким образом, чтобы каждая ссылка на объект (не отдельный интерфейс) считалась. В этом случае каждый вызов AddRef и Release делегирует в центральную реализацию объекта, а Release освобождает весь объект, когда количество его ссылок достигает нуля.
Примечание.
При построении производного CComObjectобъекта с помощью new оператора число ссылок равно 0. Поэтому вызов AddRef должен быть выполнен после успешного создания производного CComObjectобъекта.
См. также
Введение в COM
Управление временем существования объектов с помощью подсчета ссылок