【发布时间】:2012-01-27 18:05:54
【问题描述】:
我正在尝试创建 COM 对象到特定哈希的映射,例如字符串的映射。这是我正在实现的缓存算法。这个想法是,如果您尝试加载已由前一行代码打开的文件,它将以 IStream 的形式返回已创建的内存块,而无需费心将文件重新加载到内存中。我遇到的一个问题是当 COM 对象的最后一个引用被删除时,它们会自动销毁它们自己。原始容器不知道对象已被销毁,并且当您访问已释放的对象时,它会返回无效的内存句柄而不是加载文件。有没有更好的方法来实现这一点,还是我应该放弃 STL 而是制作自己的容器?
【问题讨论】:
-
在地图中使用指向 COM 对象的智能指针。这样,它将保留一个引用,直到不再需要它,以防止它被过早删除。
标签: c++ memory-management com stl