Используете std :: map для COM-объектов? - PullRequest
0 голосов
/ 27 января 2012

Я пытаюсь создать карту объектов COM с определенным хешем, например, строкой. Это алгоритм кеширования, который я реализую. Идея состоит в том, что если вы попытаетесь загрузить файл, который уже был открыт предыдущей строкой кода, он вернет уже созданный блок памяти в виде IStream и не будет перезагружать файл в память. Одна проблема, с которой я столкнулся, заключается в автоматическом уничтожении COM-объектов при удалении их последней ссылки. Исходный контейнер не знает, что объект был уничтожен, и, когда вы обращаетесь к объекту, который был освобожден, он возвращает неверный дескриптор памяти вместо загрузки файла. Есть ли лучший способ реализовать это, или я должен отказаться от STL и вместо этого сделать свой собственный контейнер?

1 Ответ

1 голос
/ 27 января 2012

Это ошибка, код, который помещает указатель интерфейса в контейнер, забыл вызвать AddRef (). Никогда не сохраняет указатели на интерфейсы COM без увеличения их количества ссылок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...