#include <iostream>
#include <memory>
int main()
{
auto_ptr<int> p(new int(9));
auto_ptr<int> ap = p;
//cout<<*p<<endl;//错误:p权限已转交无法访问到了原先指向的内存区域中的数据
unique_ptr<int> utemp(new int(9));
unique_ptr<int> up;
//up = utemp; //错误!同一块内存只能用一个指针指向
shared_ptr<int> stemp(new int(9));
shared_ptr<int> sp;
sp = stemp;
sp = stemp; //再次指向同一块内存引用计数不变
{
shared_ptr<int> mp = stemp;
cout<<sp.use_count()<<endl;//输出3
} //mp释放掉以后以用计数减去1
cout<<sp.use_count()<<endl;//输出2
return 1;
}
智能指针使用详解
本文通过实例演示了C++中不同智能指针(auto_ptr, unique_ptr, shared_ptr)的使用方式及注意事项。重点介绍了shared_ptr的引用计数机制,并展示了其在作用域结束时引用计数的变化。
3万+

被折叠的 条评论
为什么被折叠?



