【发布时间】:2014-06-09 22:44:32
【问题描述】:
如果我有:
std::unordered_map<std::string, std::shared_ptr<M>> map;
.
.
.
.
while(something){
std::shared_ptr<M> t = map[key];
.
.
}
我现在是否有两个shared_ptr<M>s- 一个仍包含在unordered_map 中,以及一个名为t 的副本?因此,我还将在堆上分配两个引用计数对象(一个用于t,一个用于map[key])和两个M 内存分配?
换句话说,与map[key] 相关的所有内存都已复制 用于t?
【问题讨论】:
-
你不能用
int表达式map[key]初始化shared_ptr。 -
map[key]是int&,而不是shared_ptr<M> -
std::unordered_map并不意味着您必须以与std::map不同的顺序传递模板参数^_^。 -
对不起,我的电线被打断了-已更新问题。
标签: c++ memory-management shared-ptr smart-pointers