假设我有一个类foo,并希望使用std :: map存储一些boost :: shared_ptrs,例如:
class foo; typedef boost::shared_ptrfoo_sp; typeded std::map foo_sp_map; foo_sp_map m;
如果我向地图添加新的foo_sp但已使用的密钥已存在,是否会删除现有条目?例如:
foo_sp_map m; void func1() { foo_sp p(new foo); m[0] = p; } void func2() { foo_sp p2(new foo); m[0] = p2; }
当原始指针(p)被p2替换时,它是否会被释放?我很确定它会,但我认为值得询问/分享.
首先,你的问题标题是boost :: auto_ptr,但实际上你的意思是boost :: shared_ptr
是的,原始指针将被释放(如果没有进一步的共享引用).