将清除共享智能指针上的呼叫重置

huy*_*yen 0 c++ smart-pointers reset shared-ptr stdvector

我最近改变了我的原始指针,std::shared_ptr在这样的容器中使用:

std::vector<std::shared_ptr<AbstractPathContainer>> mGeneratedPaths;
Run Code Online (Sandbox Code Playgroud)

当我打电话clear()给这个容器时,它会reset()在每个容器上调用方法std::shared_ptr吗?

UKM*_*key 6

没有; 它会在每个指针上调用析构函数(可能会调用也可能不会调用reset()).

如果你的问题真的"如果合适,我的记忆会被释放吗?" 然后答案是肯定的; 将根据每个共享ptr对象的需要调整引用计数,如果它为0,则将删除该对象.