在COM对象上使用std :: map?

时间:2012-01-27 18:05:55

标签: c++ memory-management com stl

我正在尝试创建COM对象到特定哈希的映射,就像字符串一样。这是我正在实现的缓存算法。我们的想法是,如果您尝试加载已由前一行代码打开的文件,它将把已创建的内存块作为IStream返回,而不是将文件重新加载到内存中。我遇到的一个问题是COM对象在删除最后一个引用时会自动销毁它们。原始容器不知道对象已被销毁,并且当您访问已释放的对象时,它将返回无效的内存句柄而不是加载该文件。有没有更好的方法来实现这个,或者我应该放弃STL而不是制作我自己的容器?

1 个答案:

答案 0 :(得分:1)

这是一个错误,将接口指针放在容器中的代码忘记调用AddRef()。 从不存储指向COM接口的指针而不增加其引用计数。