我意识到在调用vector.clear()which hold shared pointers 之后,拥有的对象的析构函数shared_ptr没有被释放。
代码示例如下所示。即使vector.clear()被调用,在共享指针之后调用的析构函数也超出了范围。我的问题是 - 我是否必须通过重置它们来手动删除向量内的所有智能指针?有没有更简单的方法可以提供建议?
Output :   
constructor
I am here
destructor
Code:
#include <vector>
#include <iostream>
#include <memory>
using namespace std;
class A
{
public:
    A(){cout << "constructor" << endl;};
    ~A(){cout << "destructor"  << endl;};
};
int main( )
{
    shared_ptr<A> sharedptr (new A);
    std::vector<shared_ptr<A> > test;
    test.push_back(sharedptr);
    test.clear();
    cout << "I am here" << endl;
}