我有一些共享指针shared_ptr<T> pointer1(new T(1));
。
现在,在代码的其他部分,我有一个明确的副本pointer2
(猜想它会存储在一个std::map
或其他容器中)。假设复制是这样完成的map.insert(make_pair(key1, pointer1));
。
我使用第二个副本只是为了预缓存一些数据,这意味着如果主指针已经无效,则不需要存储第二个指针。在这种情况下我该怎么办?
如果我知道第二个指针在pointer1
我的代码的其他部分无效,有什么方法可以强制释放第二个指针的内存?
或者我应该采取丑陋的方式 - 不时检查我的地图是否有指针ptr.unique()
设置true
并破坏它们?
也许有一些替代方案/建议?
编辑 - 纯代码示例
std::map<int, shared_ptr<int> > map;
{
shared_ptr<int> pointer1(new int(5));
map.insert(std::make_pair(0, pointer1));
}
有什么方法/技巧可以让地图包含<0, shared_ptr[NULL]>
而不是<0, shared_ptr[5]>
在这些操作发生之后?
谢谢