class A{};
int main()
{
A* a = new A;
cout << a << endl;
shared_ptr<A> p(a);
//delete a;
cout << p.use_count() << endl;
cout << p << endl;
cout << a << endl;
getchar();
return 0;
}
结果如下:
加上delete
class A{};
int main()
{
A* a = new A;
cout << a << endl;
shared_ptr<A> p(a);
delete a;
cout << p.use_count() << endl;
cout << p << endl;
cout << a << endl;
getchar();
return 0;
}
结果如下:
可见:delete之后,zhine智能指针的引用计数没有减少,指向的位置没有发生变化,但是所指内存已经析构。
同时还可以发现,delete之后原始指针指向位置发生变化,所以在delete之后要置为NULL。