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