0
点赞
收藏
分享

微信扫一扫

C++自学25:共享智能指针(make_shared/shared_ptr/reset/use_count)

GhostInMatrix 2022-07-12 阅读 83


std::shared_ptr<int> a = std::make_shared<int>(666);
std::shared_ptr<int> b = a;
std::shared_ptr<int> c = a;
std::shared_ptr<int> d = a;
std::cout << a << std::endl;
std::cout << b << std::endl;
std::cout << c << std::endl;
std::cout << d << std::endl;

use_count

std::shared_ptr<int> a = std::make_shared<int>(666);
std::shared_ptr<int> b = a;
std::shared_ptr<int> c = a;
std::shared_ptr<int> d = a;
// 打印出4,表示有4个指针指向666
std::cout << d.use_count() << std::endl;

reset释放内存,但是共享指针只有所有指针都不再指向666的时候,才会真正释放

std::shared_ptr<int> a = std::make_shared<int>(666);
std::shared_ptr<int> b = a;
std::shared_ptr<int> c = a;
std::shared_ptr<int> d = a;
a.reset();
// 打印出3,原来是4,因为a.reset了,所以还剩下bcd
std::cout << d.use_count() << std::endl;


举报

相关推荐

0 条评论